写一个简单的Hello world示例 体验一下开发者和消费者
Sender/Receiver:
使用Maven导入ActiveMQ 根据你下载的版本去导
<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-all -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.8</version>
</dependency>
Sender:七步骤
第一步:建立ConnectionFactory工厂对象,需要填写用户名,密码,以及要连接的地址,均使用默认即可,默认端口为“tcp://localhost:61616”
第二步:通过ConnectionFactory工厂对象创建一个connection连接,并且调用connection的start的方法开启连接,connection默认是关闭的
第三步:通过connection对象创建session会话(上下文环境对象),用于接受消息,参数配置1为是否启用是事务,参数配置2为签收模式,一般我们设置自动签收
第四步:通过session创建destination对象,指的是一个客户端用来制定生产消息目标和消费目标和消费消息来源的对象,在PTP模式中,destination被称作queue即队列:在pub/sub模式,destination被称作Topic即主题。在程序中可以使用多个queue和Topic
第五步:我们需要通过session对象创建消息的发送和接受对象(生产者和消费者)MessageProducer/MessageConsumer
第六步:我们可以使用MessageProducer的setDeliberatelyMode方法为其设置持久化特性和非持久化特性(DeliveryMode)
第七步:最后我们使用JMS规范的TextMessage形式创建数据(通过session对象),并用MessageProducer的send方法发送数据。同理客户端使用receive方法进行接收数据。最后不要忘记关闭connection连接。
public static void main(String[] args) throws JMSException, InterruptedException {
//第一步:建立ConnectionFactory工厂对象,需要填写用户名,密码,以及要连接的地址,均使用默认即可,默认端口为“tcp://localhost:61616”
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(
"hhh","hhh",
// ActiveMQConnectionFactory.DEFAULT_USER,//填写的用户名参数
// ActiveMQConnectionFactory.DEFAULT_PASSWORD,//填写的用户密码
"tcp://localhost:61616"//要连接的地址
);
//第二步:通过ConnectionFactory工厂对象创建一个connection连接,并且调用connection的start的方法开启连接,connection默认是关闭的
Connection connection=connectionFactory.createConnection();
connection.start();
//第三步:通过connection对象创建session会话(上下文环境对象),用于接受消息,参数配置1为是否启用是事务,参数配置2为签收模式,一般我们设置自动签收
//开启事务的话第一个参数是true 不开启就是false
//签收模式 AUTO_ACKNOWLEDGE默认的自动签收 CLIENT_ACKNOWLEDGE客户承认 DUPS_OK_ACKNOWLEDGE dup承认 SESSION_TRANSACTED 会话事务
Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
//第四步:通过session创建destination对象,指的是一个客户端用来制定生产消息目标和消费目标和消费消息来源的对象,在PTP模式中,destination被称作queue即队列:在pub/sub模式,destination被称作Topic即主题。在程序中可以使用多个queue和Topic
Destination destination=session.createQueue("first");
//第五步:我们需要通过session对象创建消息的发送和接受对象(生产者和消费者)MessageProducer/MessageConsumer
MessageProducer producer = session.createProducer(null);
//第六步:我们可以使用MessageProducer的setDeliberatelyMode方法为其设置持久化特性和非持久化特性(DeliveryMode)
// producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//第七步:最后我们使用JMS规范的TextMessage形式创建数据(通过session对象),并用MessageProducer的send方法发送数据。同理客户端使用receive方法进行接收数据。
//最后不要忘记关闭connection连接。
for (int i=0;i<100;i++){
TextMessage textMessage = session.createTextMessage("我是消息内容" + i);
//第一个参数 目标地址
//第二个参数 具体的数据信息
//第三个参数 传送数据的模式
//第四个参数 优先级
//第五个参数 消息的过期时间
producer.send(destination,textMessage);
TimeUnit.SECONDS.sleep(1);
}
// for (int i=0;i<5;i++){
// MapMessage map = session.createMapMessage();
// map.setString("name","张三");
// map.setString("age","20");
// map.setString("address","北京");
// producer.send(destination,map,DeliveryMode.NON_PERSISTENT,0,1000L*1000);
// }
//最后关闭connection连接
if(connection!=null){
connection.close();
}
}
Receiver:五步骤
第一步:建立ConnectionFactory工厂对象,需要填写用户名,密码,以及要连接的地址,均使用默认即可,默认端口为“tcp://localhost:61616”
第二步:通过ConnectionFactory工厂对象创建一个connection连接,并且调用connection的start的方法开启连接,connection默认是关闭的
第三步:通过connection对象创建session会话(上下文环境对象),用于接受消息,参数配置1为是否启用是事务,参数配置2为签收模式,一般我们设置自动签收
第四步:通过session创建destination对象,指的是一个客户端用来制定生产消息目标和消费目标和消费消息来源的对象,在PTP模式中,destination被称作queue即队列:在pub/sub模式,destination被称作Topic即主题。在程序中可以使用多个queue和Topic
第五步:通过session创建MessageConsumer
public static void main(String[] args) throws JMSException {
//第一步:建立ConnectionFactory工厂对象,需要填写用户名,密码,以及要连接的地址,均使用默认即可,默认端口为“tcp://localhost:61616”
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(
"hhh","hhh",
// ActiveMQConnectionFactory.DEFAULT_USER,//填写的用户名参数
// ActiveMQConnectionFactory.DEFAULT_PASSWORD,//填写的用户密码
"tcp://localhost:61616"//要连接的地址
);
//第二步:通过ConnectionFactory工厂对象创建一个connection连接,并且调用connection的start的方法开启连接,connection默认是关闭的
Connection connection=connectionFactory.createConnection();
connection.start();
//第三步:通过connection对象创建session会话(上下文环境对象),用于接受消息,参数配置1为是否启用是事务,参数配置2为签收模式,一般我们设置自动签收
//开启事务的话第一个参数是true 不开启就是false
//签收模式 AUTO_ACKNOWLEDGE默认的自动签收 CLIENT_ACKNOWLEDGE客户承认 DUPS_OK_ACKNOWLEDGE dup承认 SESSION_TRANSACTED 会话事务
Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
//第四步:通过session创建destination对象,指的是一个客户端用来制定生产消息目标和消费目标和消费消息来源的对象,在PTP模式中,destination被称作queue即队列:在pub/sub模式,destination被称作Topic即主题。在程序中可以使用多个queue和Topic
Destination destination=session.createQueue("first");
//第五步:通过session创建MessageConsumer
MessageConsumer consumer = session.createConsumer(destination);
while (true){
TextMessage message=(TextMessage)consumer.receive();
System.out.println("消费数据:"+message.getText());
}
}
先运行你的生产者,再运行消费者
你可以进入页面查看变化
生产者执行:
消费者执行: