(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("香坊铁路局");//Queue是Destination子接口
//5,创建向该目的地发送消息的生产者
producer = session.createProducer(destination);
//6,设置持久化模式
// 持久化模式 NON_PERSISTENT不持久化,PERSISTENT持久化,默认是持久化的