ActiveMQ消息队列实现点对点(Queue)和发布/订阅(Topic)

(Message Queue 消息队列)JMS

前言

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间中发送消息,进行异步通信
JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。


一、什么是ActiveMQ?

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS 实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位(在两个应用程序之间发送消息)。

二、启动MQ

直接双击activemq.bat就可以,注意根据系统选择(window 64位 选择 win64中的activemq)
在这里插入图片描述
启动成功。。。
在这里插入图片描述
Url:http://127.0.0.1:8161/admin/index.jsp
默认的用户名和密码:admin/admin
在这里插入图片描述
ActiveMQ的控制台,发布的消息都可以看见。
在这里插入图片描述

三、点对点(Queue)和发布/订阅(Topic)的区别

1、点对点(Queue)

在这里插入图片描述

2、发布/订阅(Topic)

在这里插入图片描述

3、点对点 与 发布/订阅的区别

在这里插入图片描述

四、ActiveMQ 点对点代码实现

1.消息发送者(Sender)

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class 生产消息到Queue
{
   
    public static void main(String[] args) {
   
        //创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                "admin",
                "admin",
                "tcp://localhost:61616");
        //声明连接
        Connection connection = null;
        //创建Session:用于发送消息和接收消息
        Session session = null;
        //创建消息的目的地
        Destination destination = null;
        //声明消息生产者
        MessageProducer producer = null;


        try {
   
            //1,获得与ActiveMQ的连接
            connection = connectionFactory.createConnection();
            //2,开启这个连接
            connection.start();
            //3,创建Session对象:这将是个用于发送消息或接收消息的线程
            //createSession 第一个参数transacted 表示是否支持事务
            //第二个参数 acknowledgeMode 有如下几种
            //1.AUTO_ACKNOWLEDGE 自动确认模式,不需客户端进行确认(通常使用这种)
            //2.CLIENT_ACKNOWLEDGE   客户端进行确认
            //客户端获得message之后需要进行message.acknowledge();
            //3.DUPS_OK_ACKNOWLEDGE  允许重复消息
            session = connection.createSession(Boolean.TRUE,
                    Session.AUTO_ACKNOWLEDGE);
            //4,创建目的地,并指明消息所放队列的名字
            destination = session.createQueue("香坊铁路局"</
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼RD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值