关于activemq的返回数据问题
activemq通过PUB/SUB方式发送消息后,想收到消息处理函数的返回消息,不知道spring里面是怎么配置的,哪位大侠指导一下,例如下述配置文件中pub对象topicMessageProducer发送到topicConsumerA,topicConsumerB两个对象的received方式,并且希望收到receive方法处理后的返回值,应该怎么配置,程序应该怎么改写
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<!-- lets wrap in a pool to avoid creating a connection per send -->
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
</bean>
</property>
<!-- custom MessageConverter -->
<property name="messageConverter" ref="defaultMessageConverter" />
</bean>
<!-- converter -->
<bean id="defaultMessageConverter" class="com.andyao.activemq.DefaultMessageConverter" />
<!-- POJO which send Message uses Spring JmsTemplate -->
<bean id="topicMessageProducer" class="com.andyao.activemq.TopicMessageProducer">
<property name="template" ref="jmsTemplate" />
<property name="destination" ref="TOPIC" />
</bean>
<!-- Message Driven POJO (MDP) -->
<!-- consumer1 for topic a -->
<bean id="topicConsumerA" class="com.andyao.activemq.TopicConsumerA" />
<!-- consumer2 for topic a -->
<bean id="topicConsumerB" class="com.andyao.activemq.TopicConsumerB" />
<!-- Message Listener for -->
<bean id="topicListenerA"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="topicConsumerA" />
<!-- may be other method -->
<property name="defaultListenerMethod" value="receive" />
<!-- custom MessageConverter define -->
<property name="messageConverter" ref="defaultMessageConverter" />
</bean>
<bean id="topicListenerB"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="topicConsumerB" />
<!-- may be other method -->
<property name="defaultListenerMethod" value="receive" />
<!-- custom MessageConverter define -->
<property name="messageConverter" ref="defaultMessageConverter" />
</bean>
<!-- listener container,MDP无需实现接口 -->
<bean id="topicListenerContainerA"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="TOPIC" />
<property name="messageListener" ref="topicListenerA" />
</bean>
<bean id="topicListenerContainerB"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="TOPIC" />
<property name="messageListener" ref="topicListenerB" />
</bean>
</beans>
附代码
import javax.jms.Topic;
import org.springframework.jms.core.JmsTemplate;
public class TopicMessageProducer {
private JmsTemplate template;
private Topic destination;
public void setTemplate(JmsTemplate template) {
this.template = template;
}
public void setDestination(Topic destination) {
this.destination = destination;
}
public void send(FooMessage message) {
template.convertAndSend(this.destination, message);
}
}
public class TopicConsumerB {
public String receive(FooMessage message) {
System.out.println("*****************接受*TopicConsumerB********************* Topic B : " + message.getId());
return "B success";
}
}
public class TopicConsumerA {
public String receive(FooMessage message) {
System.out.println("*****************接受*TopicConsumerA********************* Topic A : " + message.getId());
return "A success";
}
}
public class FooMessage implements Serializable {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}