java - 如何接收 convertAndSend 发送的内容?

标签 java spring jms

我正在阅读 Spring Framework reference ,关于 JMS 集成的章节。有一些发送文本消息和异步接收它们(通过监听器)的示例。还有一个 JmsTemplate 函数 convertAndSend 的示例,它将给定对象转换为消息。引用资料说:

By using the converter, you and your application code can focus on the business object that is being sent or received via JMS and not be concerned with the details of how it is represented as a JMS message.

但没有接收此类消息的示例。他们提到了函数 receiveAndConvert 但不幸的是,它是同步接收的。
那么我如何异步接收它呢?我必须知道,当我 convertAndSend 一个 Map 时,生成的消息将是一个 MapMessage,只需在我的监听器中检查这种类型的留言并处理?但他们 promise 我不会关心它如何表示为 JMS 消息的细节。
那么有没有更好的办法呢?

最佳答案

我知道这个问题已经有一段时间了,但我遇到了同样的问题,解决了它,想在这里给出一个明确的代码示例。

这是我的 MessageListener .这实现了 onMessage(Message)异步拦截消息的方法。

package com.package.amqp;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.support.converter.JsonMessageConverter;

import com.package.model.User;

public class TestListener implements MessageListener {

        public void onMessage(Message message) {
            JsonMessageConverter jmc = new JsonMessageConverter();
            User u = (User)jmc.fromMessage(message);
            System.out.println("received: " + u.getFirstName());
        }
}

然后使用标准 JsonMessageConvertor 转换消息。在我的情况下,因为这是 messageConvertor我插入了我的rabbitTemplate bean 。

<bean id="rabbitConnectionFactory" class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">
    <constructor-arg value="10.10.1.2"/>
    <property name="username" value="guest"/>
    <property name="password" value="guest"/>
</bean>

<bean class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
    <property name="connectionFactory" ref="rabbitConnectionFactory"/>
    <property name="queueName" value="queue.helloWorld"/>
    <property name="messageListener" ref="someListener"/>
</bean>

<bean id="someListener" class="com.package.amqp.TestListener"></bean>

<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
    <property name="connectionFactory" ref="rabbitConnectionFactory"/>
    <property name="messageConverter">
        <bean class="org.springframework.amqp.support.converter.JsonMessageConverter"/>
    </property>
</bean>

希望这对某人有所帮助! 欧文

关于java - 如何接收 convertAndSend 发送的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1373514/

相关文章:

java - 基于架构的 Multi-Tenancy : getting "java.sql.SQLException: No database selected" from time to time

java - JMS主题上下文查找问题

java - 获取span标签的标题

java - 可视化重力畸变(2D)的算法

java.io.NotSerializableException

java - Tomcat 5.5 DBCP 连接池数据源关闭

java - Jackson 的 JsonSerializer 和线程安全

java - 模拟 Autowiring 的 bean 会抛出 NullPointerException

jms - 关于 Mule JMS 队列配置的建议

java - 基于分布式 JMS 的日志记录.. 表现平平?