ActiveMQ【二】 深入

1. ActiveMQ的传输协议

  1. 面试题:
    性能调优,常用配置,可使用的传输协议
  2. 官网
http://activemq.apache.org/configuring-transports
  1. 是什么?
    在这里插入图片描述
    activemq.xml第111行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    在这里插入图片描述
  2. 修改部分
<transportConnector name="nio" uri="nio://0.0.0.0:61618"/>
  1. NIO案例
    1.1 使用nio发送和接收
    //    连接地址
    private final static String ACTIVE_URL = "nio://192.168.25.110:61618";
    //   目的地名称
    private final static String QUEUE_NAME = "nioQueue";
    //   目的地名称
    private final static String TOPIC_NAME = "nioTopic";
    //        ActiveMQConnectionFactoryCustomizer
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
    /**
     * 初始化发送
     *
     * @throws JMSException
     */
    @Test
    public void test01() throws JMSException {
        //        连接
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();
//        创建会话、【事务,签收】
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//      创建目的地
        Queue queue = session.createQueue(QUEUE_NAME);
        MessageProducer producer = session.createProducer(queue);
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);
//        发送消息
        for (int i = 1; i <= 3; i++) {
            TextMessage textMessage = session.createTextMessage();
            textMessage.setText("这是一个测试:" + i);
            producer.send(textMessage);
        }
//        关闭资源
        producer.close();
        session.close();
        connection.close();
    }

    //   监听接收  异步非阻塞方式
    @Test
    public void acceptListener() throws JMSException, IOException {
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
//      创建目的地
        Queue queue = session.createQueue(QUEUE_NAME);
        MessageConsumer consumer = session.createConsumer(queue);
        consumer.setMessageListener((t) -> {
            if (null != t && t instanceof TextMessage) {
                TextMessage t1 = (TextMessage) t;
                try {
                    System.out.println("监听模式:" + t1.getText());
                    t1.acknowledge();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            } else if (null != t && t instanceof MapMessage) {
                MapMessage t1 = (MapMessage) t;
                try {
                    System.out.println("MapMessage:" + t1.getString("k1"));
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
        System.in.read();//等待
        consumer.close();
        connection.close();
    }

查看链接如下:
在这里插入图片描述

  1. 多协议支持 nio+mqtt+tcp+…
             官网示例:
    在这里插入图片描述


    配置详情:
    activemq.xml新增
<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&amp;org.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=50" />

在这里插入图片描述

         访问官网:

在这里插入图片描述
         代码启动
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值