我正在使用JmsTemplate转换和发送事件对象。我已经向JmsTemplate注册了MappingJackson2MessageConverter。
Event event;
jmsTemplate.convertAndSend(topic, event);
我正在使用DefaultMessageListenerContainer
并从该主题获取消息。我不知道如何将此消息转换回我的对象?
JmsTemplate的messageconverter是
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
}
我尝试调用MappingJackson2MessageConzer
并传递此消息对象进行转换,但没有成功。如何将我收到的消息对象转换为我想要的自定义对象?
@Bean
public DefaultMessageListenerContainer listenerContainer() {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setDestinationName(COMMENT_QUEUE);
container.setPubSubDomain(true);
container.setMessageListener(new AcListenerSubscriber());
container.start();
return container;
}
只有在使用@JmsListener
注释来创建侦听器时,才会应用MessageConverter
。
在一个MessageListener
的情况下,像您的AcListenerSubcriber
它被忽略。
我在使用spring-jms模块转换来自RabbitMQ的消息时遇到了一些问题。以前,我使用Rest APIendpoint发送消息,该endpoint将消息发送到RabbitMQ队列,并使用@JMSListener方法处理它。 在内部,这种行为添加了一个字段来确定Java类型,由Spring库管理。但是,现在我想避免Rest API调用,因为它不是必需的,而且我可以直接将消息发送到RabbitM
Spring JMS中的类具有setter方法,它允许提供我们想要的任何转换器。 对于带注释的消息侦听器,这很有意义,因为我们可以直接定义 spring将负责将消息转换并传递给这个侦听器。 因此,这对于带注释的听者来说显然是有意义的。我的问题是,设置消息转换器对非注释消息侦听器有用吗?类似于 从我在docs/javadocs中的搜索和对源代码的有限理解来看,我认为为这种情况设置消息转换器是没有帮助
Spring Boot上有一个应用程序,它把它的jms请求放在一个队列中,然后从另一个队列中获取答案。还有一个应用程序正在处理响应队列。请求~每秒100次。实际上,问题是如何处理它们并选择我需要的?现在我使用@JmsListener读取队列中的所有消息,但是那些不适合我的应用程序的消息被绘制出来。创建一个线程并分别等待答案,在我看来,这似乎不是一个好主意,因为可以有几千个线程。如何成为?
我正在与JTA、两阶段提交、JMS和JDBC事务作斗争。这个想法(简而言之)是 在队列中接收消息 所以我得到了,创建,从会话创建接收器并设置消息侦听器。 在侦听器内部,在方法中,我开始我的用户事务,执行jdbc内容并提交事务或在出现问题时进行回滚。现在我期望(又名“希望”)当用户事务提交时,消息会得到确认。 但这并没有发生,消息仍然在队列中,并且一次又一次地被重新传递。 我错过了什么?我仔细检查了
我们的环境由3个jboss服务器组成(门户、jms、协调)。 协调服务器托管骆驼路由,该路由具有消耗自队列(SLAQueue)的路由 JMS服务器托管了我们的所有队列 最近,我们发现了一个错误,即托管在JMS服务器上的TaskQueue中的一些消息没有传递到门户服务器上的MDB。由于某些原因,它们被卡住了,当我们重新启动JMS服务器时,卡住的消息被传递 为了进行调查,我们在“org.apache.