ActiveMQ 点对点消息传送模型

本文介绍了ActiveMQ在点对点消息传送模型的应用,其中消息只能被一个消费者接收。消费者通过拉取或轮询从队列获取消息,Spring Framework提供内置的JMS支持。配置示例包括设置定时任务作为消息生产者,以及定义消息监听容器实现消费者集群,以实现负载均衡和提高系统可靠性。
摘要由CSDN通过智能技术生成

这里写图片描述

点对点消息传送模型允许JMS客户端通过队列这个虚拟通道来同步和异步发送、接收消息。
在点对点消息传送模型中,消息生产者称为发送者,消息消费者称为接收者

消费者是基于拉取(pull)或基于轮询(polling)来从队列中请求消息,队列并不会自动地将消息推送到客户端

一个消息有且只能被一个消费者接收,即使有多个消费者同时监听了队列

点对点模型支持负载均衡,允许多个消费者监听同一个队列,并以此来分配负载

Spring Framework 为JMS提供了内置支持,Spring提供了JMS模板和消息监听容器
JMS实现采用ActiveMQ

定义消息生产者

public interface ProducerService {
   
    /**
     * P2P 点对点模式生产者发送消息.
     * 
     * @param destination
     * @param message
     */
    public void sendMessage(Destination destination, String message);
}
@Component("producerService")
public class ProducerServiceImpl implements ProducerService {
   

    //Spring JMS Template
    @Resource(name="jmsTemplate")
    private JmsTemplate jmsTemplate;

    /**
     * P2P 点对点模式生产者发送消息.
     * 
     * @param destination
     * @param message
     */
    @Override
    public void sendMessage(Destination destination, final String message) {
        jmsTemplate.send(destination, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage(message);
            }
        });
    }
}

设置一个定时任务充当消息生产者,每隔两秒发送一条消息,消息内容为当前时间

@Component(value = "poll")
public class Poll {
   

    // ActiveMQ生产者
    @Resource(name = "producerService")
    private ProducerService producerService;
    // ActiveMQ 预先预约运单号队列目的地
    @Resource(name = "queueDestination")
    private Destination destination;
    @Scheduled(cron="0/2 * * * * ?")
    public void getTradeIncrement() {
        producerService.sendMessage(destination, "当前时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }
}

定义一个消费者监听队列:

public class ConsumerMessageListener implements MessageListener{
   
    @Override
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值