ActiveMq实例
1.发布端
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session; import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class Publisher
{
private static Logger logger = LoggerFactory.getLogger(Publisher.class); public static void main(String[] args)
{
ConnectionFactory connectionFactory;
Connection connection = null;
Session session;
MessageProducer producer;
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try
{
connection = connectionFactory.createConnection();
connection.start(); session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE); //注意这里与ptp例子的区别,使用null作为destination
producer = session.createProducer(null); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); sendMessage(session, producer); session.commit();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if (null != connection)
connection.close();
}
catch (Throwable ignore)
{
}
} } private static void sendMessage(Session session, MessageProducer producer) throws JMSException
{
Destination destination = session.createTopic("pub/sub");
Message message = session.createMapMessage();
message.setStringProperty("company", "alibaba");
message.setStringProperty("department", "b2b");
logger.info("destination is {};message is ready to send", destination); producer.send(destination, message);
}
}
2.接收端
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session; import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory; public class Subscribe
{
public static void main(String[] args)
{
ConnectionFactory connectionFactory;
Connection connection = null;
Session session;
Destination destination;
MessageConsumer consumer; connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try
{
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE); destination = session.createTopic("pub/sub");
consumer = session.createConsumer(destination); //设置指定的监听器
consumer.setMessageListener(new MyListener()); Thread.sleep(100*1000);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if (null != connection)
connection.close();
}
catch (Throwable ignore)
{
}
} }
}
3.监听器
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class MyListener implements MessageListener
{
private static Logger logger = LoggerFactory.getLogger(MyListener.class); public void onMessage(Message message)
{
MapMessage mapMessage = (MapMessage) message;
try
{
String company = mapMessage.getStringProperty("company");
String department = mapMessage.getStringProperty("department"); logger.info("company is {} ; department is {}", company,department);
} catch (JMSException e)
{
e.printStackTrace();
}
}
}
4.测试
先启动接收端,再启动发布端,结果为:
[main] INFO com.mycompany.app.pub.sub.Publisher - destination is topic://pub/sub;message is ready to send
[ActiveMQ Session Task-1] INFO com.mycompany.app.pub.sub.MyListener - company is alibaba ; department is b2b
ActiveMq实例的更多相关文章
- ActiveMQ实例1--简单的发送和接收消息
一.环境准备 1,官网http://activemq.apache.org/下载最新版本的ActiveMQ,并解压 2,打开对应的目录,在Mac环境下,一般可以运行命令: cd /Users/***/ ...
- JMS学习二(简单的ActiveMQ实例)
下载安装ActiveMQ服务,下载地址当然可以去官网下载 http://activemq.apache.org/download-archives.html ActiveMQ安装很简单,下载解压后到b ...
- C#使用ActiveMQ实例
1. ActiveMQ消息总线简介 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已.主要用作不同进程.应用 ...
- ActiveMQ实例2--Spring JMS发送消息
参考文章:http://my.oschina.net/xiaoxishan/blog/381209#OSC_h3_7 一,步骤参照参考文献 二.新建的项目 三.补充 web.xml <?xml ...
- ActiveMQ挂了,重启一直无法将所有实例启起来的问题
背景 2017年3月29日 下午2-3点时分,工单模块无法访问.跟踪日志发现,ActiveMQ连接不上导致整个工单模块瘫痪: 首先判断可能是系统需要然后尝试重启工单模块,重新启动工单模块,结果:重启 ...
- ActiveMQ的集群方案对比及部署
转载:http://blog.csdn.net/lifetragedy/article/details/51869032 ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这 ...
- ActiveMQ笔记(4):搭建Broker集群(cluster)
上一篇介绍了基于Networks of Borkers的2节点HA方案,这一篇继续来折腾Networks of Brokers,当应用规模日渐增长时,2节点的broker可能仍然抗不住访问压力,这时候 ...
- ActiveMQ集群应用
ActiveMQ集群 ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要由两种:Master-Slave和Broker Cluster. 1.M ...
- ActiveMQ: 搭建Broker集群(cluster)
上一篇介绍了基于Networks of Borkers的2节点HA方案,这一篇继续来折腾Networks of Brokers,当应用规模日渐增长时,2节点的broker可能仍然抗不住访问压力,这时候 ...
随机推荐
- 剑指Offer_编程题_24
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. /* struct TreeNode { int ...
- mycat 使用
介绍 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理. 基 ...
- ACM-ICPC 2018 徐州赛区网络预赛 G Trace(思维+set)
https://nanti.jisuanke.com/t/31459 题意 n个矩阵,不存在包含,矩阵左下角都在(0,0),给右上角坐标,后来的矩阵会覆盖前面的矩阵,求矩阵周长. 分析 set按照x或 ...
- tolua之wrap文件的原理与使用
什么是wrap文件 每个wrap文件都是对一个c#类的包装,在lua中,通过对wrap类中的函数调用,间接的对c#实例进行操作. wrap类文件生成和使用的总体流程 生成一个wrap文件的流程 这部分 ...
- JavaScript 正则表达式基础语法
前言 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当 ...
- Java设计模式之抽象工厂
概述 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式 ...
- div的默认position值是静态的static
div的默认position值是静态的static,如果相对父元素使用Position:absolute的话,需要手动在父元素上添加Position.
- git秘钥生成
#修改git配置 vi .gitconfig #生成秘钥 ssh-keygen -t rsa -C "邮箱地址" #查看秘钥 cat id_rsa.pub
- kde钱包 忘记密码
转自 https://forum.suse.org.cn/t/kwallet/4367/2 修改 ~/.config/kwalletrc文件的First Use=false 改成 true 应该可以重 ...
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'asy