消息中间件ActiveMQ的应用

ActiveMQ是一种开源的消息系统,有两种发送方式和接收方式。一种是P2P(Ponit to Point),另外一种是Pub/Sub(Publish/Subscribe,即发布-订阅)。P2P的方式简单的说就是消息一旦被某个消费者消费掉,后面消费者就无法得到这个消息。所以P2P是一对一的关系。而Pub/Sub 则是一对多的关系。一个消息发出,所以监听的消费者都是可以收到的。ActiveMQ的应用广泛。专门用来接收远程频繁发送给的数据,减轻服务器的压力。如下图的应用框架就用到了中间件ActiveMQ

消息中间件ActiveMQ的应用

  ActiveMQ生产者:


    @Value("${spring.activemq.queue-name}")
    private String queueName;

    @Value("${spring.activemq.topic-name}")
    private String topicName;
    
    
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
    
    
    @Bean(name = "queue")
    public Queue queue() {
        return new ActiveMQQueue(queueName);
    }

    @Bean(name = "topic")
    public Topic topic() {
        return new ActiveMQTopic(topicName);
    }

    @Autowired
    private Queue queue;

    @Autowired
    private Topic topic;

    @RequestMapping("/sendQueue.do")
    public String sendQueue(@RequestParam String str) {
        this.sendMessage(this.queue, str);
        return "success";
    }

    @RequestMapping("/sendTopic.do")
    public String sendTopic(@RequestParam String str) {
        this.sendMessage(this.topic, str);
        return "success";
    }

    
    private void sendMessage(Destination destination, final String message){
        jmsMessagingTemplate.convertAndSend(destination, message);
    }

 

ActiveMQ消费者:

   
    @JmsListener(destination="${spring.activemq.queue-name}", containerFactory="queueListener")
    public void readActiveQueue(String message) {
        System.out.println("接受到queue模式:" + message);
    }
    @JmsListener(destination="${spring.activemq.topic-name}", containerFactory="topicListener")
    public void readActiveQueue(String message) {
        System.out.println("接受到topic模式:" + message);
    }