消费者1(Consumer)--订阅(subcribe)-->主题(Topic)package com.java1234.activemq2;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageConsumer;

import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;

import org.apache.activemq.ActiveMQConnectionFactory;

/**

* 消息消费者-消息订阅者一

* @author Administrator

*

*/

public class JMSConsumer {

private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名

private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码

private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址

public static void main(String[] args) {

ConnectionFactory connectionFactory; // 连接工厂

Connection connection = null; // 连接

Session session; // 会话 接受或者发送消息的线程

Destination destination; // 消息的目的地

MessageConsumer messageConsumer; // 消息的消费者

// 实例化连接工厂

connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);

try {

connection=connectionFactory.createConnection();  // 通过连接工厂获取连接

connection.start(); // 启动连接

session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session

// destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列

destination=session.createTopic("FirstTopic1");

messageConsumer=session.createConsumer(destination); // 创建消息消费者

messageConsumer.setMessageListener(new Listener()); // 注册消息监听

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}package com.java1234.activemq2;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.TextMessage;

/**

* 消息监听-订阅者一

* @author Administrator

*

*/

public class Listener implements MessageListener{

@Override

public void onMessage(Message message) {

// TODO Auto-generated method stub

try {

System.out.println("订阅者一收到的消息:"+((TextMessage)message).getText());

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

消费者2(Consumer)--订阅(subcribe)-->主题(Topic)

生产者(Producer)--发布(publish)-->主题(Topic)package com.java1234.activemq2;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.MessageProducer;

import javax.jms.Session;

import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;

import org.apache.activemq.ActiveMQConnectionFactory;

/**

* 消息生产者-消息发布者

* @author Administrator

*

*/

public class JMSProducer {

private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名

private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码

private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址

private static final int SENDNUM=10; // 发送的消息数量

public static void main(String[] args) {

ConnectionFactory connectionFactory; // 连接工厂

Connection connection = null; // 连接

Session session; // 会话 接受或者发送消息的线程

Destination destination; // 消息的目的地

MessageProducer messageProducer; // 消息生产者

// 实例化连接工厂

connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);

try {

connection=connectionFactory.createConnection(); // 通过连接工厂获取连接

connection.start(); // 启动连接

session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 创建Session

// destination=session.createQueue("FirstQueue1"); // 创建消息队列

destination=session.createTopic("FirstTopic1");//创建主题

messageProducer=session.createProducer(destination); // 创建消息生产者

sendMessage(session, messageProducer); // 发送消息

session.commit();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally{

if(connection!=null){

try {

connection.close();

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

/**

* 发送消息

* @param session

* @param messageProducer

* @throws Exception

*/

public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{

for(int i=0;i

TextMessage message=session.createTextMessage("ActiveMQ 发送的消息"+i);

System.out.println("发送消息:"+"ActiveMQ 发布的消息"+i);

messageProducer.send(message);

}

}

}

java jms消息队列_JMS消息队列ActiveMQ(发布/订阅模式)相关推荐

  1. MQ - 消息队列中点对点模型与发布/订阅模式的区别

    背景知识 JMS一个在 Java标准化组织(JCP)内开发的标准(代号JSR 914).2001年6月25日,Java消息服务发布JMS 1.0.2b,2002年3月18日Java消息服务发布 1.1 ...

  2. ActiveMQ发布订阅模式

    ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...

  3. 【MQTT 5.0】协议 ——发布订阅模式、Qos、keepalive、连接认证、消息结构

    一.前言 1.1 MQTT 协议概述 1.2 MQTT规范 二.MQTT 协议基本概念 2.1 发布/订阅模式 2.11 MQTT 发布/订阅模式 2.12 MQTT 发布/订阅中的消息路由 2.13 ...

  4. Java实现redis消息队列发布/订阅模式

    最近在一个老项目中需要用消息队列,本来想着用卡夫卡,但是试了几个版本之后发现jdk和卡夫卡版本一直对不上,最后选择用redis来实现消息队列的发布/订阅模式.感谢这位大佬的博客给了我很多的帮助,htt ...

  5. java订阅发布模式_Spring Boot ActiveMQ发布/订阅消息模式原理解析

    本文在<Spring Boot基于Active MQ实现整合JMS>的基础上,介绍如何使用ActiveMQ的发布/订阅消息模式.发布/订阅消息模式是消息发送者发送消息到主题(topic), ...

  6. mysql消息队列推送到redis_Redis实现消息队列之发布订阅模式

    发布订阅(pub/sub)是一种消息通信模式:发送者(pub)在某一频道发送消息,订阅者(sub)接收消息.发布订阅模式类似与微博关注,比如说博主mango被张三.李四.王五关注,那么mango发一篇 ...

  7. kafka 发布-订阅模式_使用Apache Kafka作为消息系统的发布-订阅通信中的微服务,并通过集成测试进行了验证...

    kafka 发布-订阅模式 发布-订阅消息系统在任何企业体系结构中都起着重要作用,因为它可以实现可靠的集成而无需紧密耦合应用程序. 在解耦的系统之间共享数据的能力并不是一个容易解决的问题. 考虑一个企 ...

  8. RabbitMQ六种队列模式-发布订阅模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 [本文] RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列 ...

  9. RabbitMQ 服务异步通信 -- 入门案例(消息预存机制)、SpringAMQP、发布订阅模式(FanoutExchange、DirectExchange、TopicExchange)、消息转换器

    文章目录 1. 入门案例 2. 完成官方Demo中的hello world案例 2.1 创建1个工程,2个模块 2.1.1 父工程的依赖,子工程不需要导入额外的依赖 2.1.2 配置子工程的配置文件( ...

  10. 【转】RabbitMQ六种队列模式-3.发布订阅模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 [本文] RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列 ...

最新文章

  1. Linux系统编程6:入门篇之如何拿下gdb调试器?来和我一起调试一个程序
  2. WebGIS中解决使用Lucene进行兴趣点搜索排序的两种思路
  3. 算法总结系列之八:复读机的故事 - 散列表.NET应用的研究(下集)
  4. VS2010开发web项目打开后,项目不可用,提示“需要缺少的 Web 组件才能进行加载”
  5. select into from 与 insert into select用法详解
  6. 史上最全编程语言列表,你掌握了哪些?
  7. 怎么将英文的PDF翻译成中文的
  8. 微信公众号申请最新流程
  9. 为何要开办《微积分阅览室》?
  10. 闽南师范大学基础计算机教学部,闽南师范大学计算机基础教学部.doc
  11. 一文囊括Ceph所有利器(工具)
  12. Chrome无痕模式
  13. 7-18 用格里高利公式求给定精度的PI值
  14. wmf文件与emf文件
  15. Mac系统如何进入mysql
  16. CodeSYS之一EtherNET驱动禾川电机
  17. 计算机多媒体培训心得体会,学习计算机多媒体技术心得体会
  18. intel android haxm,使用Intel HAXM为Android模拟器加速,媲美真机
  19. 深度学习 常用的trick
  20. 获奖公布|程序员/媛 恋爱、结婚这件小事

热门文章

  1. 常见数据平台架构有哪些
  2. mysql utf-8转utf8mb4_MySQL UTF8 转为 utf8mb4
  3. java 多项式拟合最多的项数_MATLAB绘制带置信区间的拟合曲线
  4. java 选取topn_取Oracle中实现TOPN,选取前几条记录
  5. s5原生android 5.0,三星Galaxy S5/S4吃上原生安卓5.0棒棒糖
  6. .o文件 linux生成,vmlinux.o 生成
  7. windows mysql 自动备份_windows mysql 自动备份的几种方法总结--岁月博客提供
  8. CDH修改PySpark默认的Python版本
  9. Android6.0动态权限
  10. 点击头像上传文件的效果