初识activemq消息中间件(p2p模式)

本文介绍了ActiveMQ点对点模式,详细讨论了四种签收模式:CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE和SESSION_TRANSACTED,以及它们的优缺点。同时,讲解了事务支持和消息持久化的重要性。此外,文章还探讨了一对一和多对多的生产者与消费者场景,强调了生产者和消费者目的地一致性的关键点。
摘要由CSDN通过智能技术生成

签收模式

activemq有4中签收模式,分别是CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE、SESSION_TRANSACTED

  • CLIENT_ACKNOWLEDGE,客户端确认签收
  • AUTO_ACKNOWLEDGE自动签收,有可能导致消息的丢失,或者消息的重复接受
  • DUPS_OK_ACKNOWLEDGE,"消息可重复"确认,此模式下,可能会出现重复消息,并不是一条消息需要发送多次ACK才行。它是一种潜在的"AUTO_ACK"确认机制,为批量确认而生,而且具有“延迟”确认的特点。
  • SESSION_TRANSACTED,当session使用事务时,就是使用此模式。在事务开启之后,和session.commit()之前,所有消费的消息,要么全部正常确认,要么全部redelivery

事务

activemq支持事务,在创建session时指定是否支持事务,如果开启了事务,必须commit。

持久化

activemq也可以指定是否持久化消息,可以调用producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);来指定是否持久化,默认是持久化的。

一个生产者一个消费者

需要注意的是,生产者和消费者的目的地要一样

生产者

public class Producer {
    //用户名
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
    //密码
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
    //url
    private static final String URL = ActiveMQConnection.DEFAULT_BROKER_URL;

    private static ConnectionFactory factory = null;
    private static Connection connection = null;
    private static Session session = null;


    public static void main(String[] args) throws JMSException {
        factory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, URL);
        connection = factory.createConnection();
        connection.start();
        /*
         *第一个参数:是否打开事务,如果打开了事务,必须commit
         * 第二个参数:消息确认模式,一般设置为CLIENT_ACKNOWLEDGE
         */
        session = connection.createSession(false,Session.SESSION_TRANSACTED);
        //通过
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值