Active MQ的安装

下载地址:http://activemq.apache.org/do...
下载后解压,进入该目录,进入bin文件夹
启动:

activemq start

在浏览器中输入:http://localhost:8161/admin
用户名: admin
密码: admin
即可以实现Active MQ的页面访问

安装依赖

<dependency>  
    <groupId>org.springframework.boot</groupId>    
    <artifactId>spring-boot-starter-activemq</artifactId> 
</dependency>

写公用配置

@Configuration  
public class ActiveMqConfig {  
  
/**  
 * 发布/订阅模式队列名称 
 */  
 public static final String TOPIC_NAME = "activemq.topic";  
/**  
 * 点对点模式队列名称 
 */  public static final String QUEUE_NAME = "activemq.queue";  
  
    @Bean  
  public javax.jms.Destination topic() {  
        return new ActiveMQTopic(TOPIC_NAME);  
    }  
  
    @Bean  
  public javax.jms.Destination queue() {  
        return new ActiveMQQueue(QUEUE_NAME);  
    }  
  
 /**  
 * JmsListener注解默认只接收queue消息,如果要接收topic消息,需要设置containerFactory 
 */  
 @Bean  
  public JmsListenerContainerFactory topicListenerContainer(ConnectionFactory connectionFactory) {  
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();  
        factory.setConnectionFactory(connectionFactory);  
        // 相当于在application.yml中配置:spring.jms.pub-sub-domain=true  
  factory.setPubSubDomain(true);  
        return factory;  
    }  
}

写service中生产者和消费者

MsgProducer:生产者

@Service  
public class MsgProducer {  
    @Resource  
  private JmsMessagingTemplate jmsMessagingTemplate;  
  
    public void sendMessage(Destination destination, String msg) {  
        jmsMessagingTemplate.convertAndSend(destination, msg);  
    }  
}

QueueConsumer:消费者

@Service  
public class QueueConsumer {  
  
 /**  
 * 接收点对点消息 * @param msg  
 */  
  @JmsListener(destination = ActiveMqConfig.QUEUE_NAME)  
    public void receiveQueueMsg(String msg) {  
        System.out.println("收到的消息为:" + msg);  
    }  
}

写controller层

@Resource  
private MsgProducer producer;  
  
@Resource  
private Destination queue;  
  
@GetMapping("send/queue")  
public String sendQueueMessage(){  
    logger.info("===开始发送点对点消息===");  
    producer.sendMessage(queue, "Queue: hello activemq!"); 
    return "success";  
}

stray
132 声望10 粉丝

引用和评论

0 条评论