前言
本篇文章的内容会非常之少,因为 Topic 类型的数据的发送和接收本身在代码上并没有太大的差别,唯一的差别在于声明 JmsTemplate 时注入的是 ActiveMQQueue 还是 ActiveMQTopic,所以本文仅就这部分差别进行阐述,并且强调一下 Topic 类型数据的特性。
回顾 Queue 类型消息的发送和请求过程
(四) 消息中间件——使用 JmsTemplate 向 ActiveMQ 发送 Queue 类型消息
(五) 消息中间件——使用 JmsTemplate 向 ActiveMQ 获取 Queue 类型消息
ActiveMQTopic 和 JmsTemplate
回顾 ActiveMQTopic Bean 的声明
//测试topic
@Bean(name="activeMQTopic")
public ActiveMQTopic getActiveMQTopic(){
ActiveMQTopic a=new ActiveMQTopic("topic_test");//构造方法同时确定来队列消息的名字
return a;
}
回顾 JmsTemplate Bean 的声明
@Resource(name="activeMQConnectionFactory")
private ActiveMQConnectionFactory connectionFactory;
//通过名字指定注入的对象
@Resource(name="activeMQTopic")
private ActiveMQTopic activeMQTopic;
@Bean(name="JmsTemplateTopic")
public JmsTemplate getJmsTemplateTopic(){
JmsTemplate j=new JmsTemplate();
j.setConnectionFactory(connectionFactory);//连接工厂
j.setDefaultDestination(activeMQTopic);//目标消息
return j;
}
Topic 类型消息的特性
你可以同时声明多个 JmsTemplate Bean 来验证下面的特性
1、消费者请求 Topic 类型的消息,如果没有则消费者等待
2、Topic 类型的消息到达ActiveMQ,如果有等待的消费者,则立即将消息推送给消费者,否则这个消息会被丢弃而不会被 ActiveMQ 保存
3、Topic 类型的消息可以被多个消费者消费