java - Redis PUBSUB OnMessage ClassNotfound 异常
问题描述
我正在尝试在 Redis pubsub OnMessage 函数中使用 RMap.get() 但它会生成 classNotFound 异常,我已经在同一个类的多个方法中使用了这个方法并且它在那里工作正常。我错过了什么吗?
引起:java.io.IOException: java.lang.ClassNotFoundException: com.sibisoft.northstar.pms.VoiceMailExtRequestDTO at org.redisson.codec.SerializationCodec$1.decode(SerializationCodec.java:62) at org.redisson.client.handler .CommandDecoder.decode(CommandDecoder.java:378) 在 org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:196) 在 org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:134) 在org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:104) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ReplayingDecoder.callDecode( ReplayingDecoder.java:366) 在 io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) 在 io.netty.channel.AbstractChannelHandlerContext。在 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty.channel.DefaultChannelPipeline 调用ChannelRead(AbstractChannelHandlerContext.java:379) $HeadContext.channelRead(DefaultChannelPipeline.java:1410) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) 在 io.netty。 channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) 在 io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) 在 io.netty.channel.nio.NioEventLoop 的 io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) .run(NioEventLoop.java:493) 在 io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) 在 io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 。 .. 还有 2 个
在这种方法中工作正常:
private synchronized void addToRequestQueue(VoiceMailExtRequestDTO request){
voiceMailRequestsList = voiceMailRequests.get(0, reqeustThread.siteId);
}
调用 onMessage():
@Override
public void onMessage(CharSequence channel, String object) {
vmRequests.get(0, reqeustThread.siteId)
}
获取功能:
public V get(int tenantId, Object key) throws RedisException {
if (rMap && isRedisConfigured) {
try{
redisMap = getRMap(tenantId);
return redisMap.get(key);
}catch(RedisException e){
logger.error("redisson client exception: "+ e.getMessage());
e.printStackTrace();
}
return null;
} else if (!isMultitenancyConfigured) {
return super.get(key);
} else {
return localMap.get(new Integer(tenantId), key);
}
}
private RMap<K, V> getRMap(int tenantId) {
if (localCache) {
return client.getLocalCachedMap(mapName + tenantId, defaults());
} else {
return client.getMap(mapName + tenantId);
}
}
解决方案
推荐阅读
- etl - 不同的日期格式比较是否适用于 Informatica?
- java - 如何在android中显示图像?
- javascript - Sendgrid 未处理的错误持续存在于新创建的帐户中
- python - 我无法使用 numpy 和 pandas 创建此回归
- javascript - 如何在使用 JS 或 Jquery 之后插入 HTML 注释标记
- python - 创建熊猫数据框:在numpy上映射一个函数
- c# - 如何让 Identity Server 4 在我的本地机器上通过 HTTPS 运行?
- javascript - 使用 filepond 删除文件
- c# - 将浏览器中的 solr 参数转换为 c# json
- oracle - 更新我的评论部分时触发描述太长错误