java - Spring Redis pubsub:onMessage 回调数据操作不起作用
问题描述
我已经实现了 MessageListener 并覆盖了 onMessage(..) 方法,如下所示:
@Override
public void onMessage(Message message, byte[] pattern) {
log.info("callback--- onMessage:{}", message.toString());
// String msg=message.toString();
// if(Util.isProperJson(message.toString()))
{
String msg=new String(message.toString()); //new String(message.getBody(), StandardCharsets.UTF_8);
JSONObject eventInfoJson= new JSONObject(msg);
EmailInfo eventInfo=Util.getDeserializedObj(eventInfoJson, EmailInfo.class);
googleCalendarService.createGoogleCalendarEvent(eventInfo);
}
当我打印 message.toString 或将 message.getBody() 的 byteArray 转换为字符串时,我得到了正确的 jsonString。但是当我尝试将它转换为 jsonObject 以反序列化为一个对象时,我得到错误说它不是有效的 json 字符串,尽管它是有效的,因为我将字符串复制到另一个地方并转换为 JSONObject 没有任何问题。我正在使用 org.json 转换为 JSONObject。我的控制台字符串数据:
"{\"cc\":[\"email1\",\"emai2\"],\"meetingName\":\"string\",\"meetingPlace\":\"string\",\"subject\":\"string\",\"recipient\":[\"string\"],\"description\":\"string\",\"startTime\":{\"dayOfWeek\":\"THURSDAY\",\"month\":\"FEBRUARY\",\"hour\":12,\"dayOfYear\":35,\"year\":2021,\"dayOfMonth\":4,\"monthValue\":2,\"nano\":102000000,\"chronology\":{\"calendarType\":\"iso8601\",\"id\":\"ISO\"},\"minute\":0,\"second\":20},\"endTime\":{\"dayOfWeek\":\"THURSDAY\",\"month\":\"FEBRUARY\",\"hour\":12,\"dayOfYear\":35,\"year\":2021,\"dayOfMonth\":4,\"monthValue\":2,\"nano\":102000000,\"chronology\":{\"calendarType\":\"iso8601\",\"id\":\"ISO\"},\"minute\":30,\"second\":20},\"body\":\"string\",\"projectName\":\"string\"}";
错误日志:
2021-02-03 16:15:54.855 错误 osdrladapter.MessageListenerAdapter - 侦听器执行失败 org.json.JSONException:JSONObject 文本必须在 org.json.JSONTokener.syntaxError( JSONTokener.java:507) 在 org.json.JSONObject.(JSONObject.java:222) 在 org.json.JSONObject.(JSONObject.java:406) 在 com.tigerit.soa.redis.RedisMessageSubscriber.onMessage(RedisMessageSubscriber.java :41) 在 org.springframework.data.redis.listener.RedisMessageListenerContainer.executeListener(RedisMessageListenerContainer.java:250) 在 org.springframework.data.redis.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:297)。 springframework.data.redis.listener.RedisMessageListenerContainer.processMessage(RedisMessageListenerContainer.java:240) 在 org.springframework.data.redis.listener。RedisMessageListenerContainer.lambda$dispatchMessage$0(RedisMessageListenerContainer.java:986) 在 java.lang.Thread.run(Thread.java:745)
我在这里想念什么:(?
解决方案
推荐阅读
- python-3.x - 使用GPU的结果有什么区别?
- github-pages - 尽管在我的实时服务器上本地工作,但图像不会加载到 git hub 页面上。我检查了路径和 Capitilisation
- gml - 如何修复:代码未在某些帧上运行
- notepad++ - 安装在 Windows 7 Professional(以及 Windows 10)上的 Notepad++ 7.7.1 不会保存具有选定扩展名的新文件
- reactjs - 如何从挂钩中的选项卡中添加或删除项目?
- bash - 使用正则表达式移动命令
- laravel - 在 Laravel 中使用 Vuetify(错误:Vuetify 未正确初始化)
- html - 带有滚动条问题的多级下拉菜单
- r - 我收到关于“diskImageR”包的路径错误,我不理解
- google-cloud-firestore - 如何使用云功能向集合的现有文档添加新字段?