activemq消息生产者与消息消费者简单例子
消息生产者HelloQueueProducer.java
package activemq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class HelloQueueProducer {
public static void sendMessage(String activemq_url, String activemq_user, String activemq_pw, String msg, String queue_name) {
try {
//通过username,password,url创建连接工厂接口
ConnectionFactory factory = new ActiveMQConnectionFactory(activemq_user, activemq_pw, activemq_url);
//通过连接工厂创建一个新的连接接口
Connection connection = factory.createConnection();
//打开连接
connection.start();
//通过连接接口创建一个会话接口 消息应答模式:Session.AUTO_ACKNOWLEDGE
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//会话接口创建有关主题的目标接口
Destination destination = session.createQueue(queue_name);
//会话接口再根据目标接口来创建一个消息生产者接口
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
//调用会话生成一个文本消息
// Message message = session.createTextMessage(msg);
//调用会话生成一个对象消息
QueueModel model = new QueueModel();
model.setId("1");
model.setIdType(1);
model.setOperType(1);
model.setDesc("修改");
Message message = session.createObjectMessage(model);
//通过生产者接口Send将消息发布到ActiveMQ服务器
producer.send(message);
//关闭会话
session.close();
//关闭连接
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// sendMessage("tcp://localhost:61616", ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "发送消息:Hello ActiveMQ Text Message!", "test_queue");
sendMessage("tcp://localhost:61616", "system", "manager", "发送消息:Hello ActiveMQ Text Message!", "test_queue");
}
}
消息消费者HelloQueueConsumer.java
package activemq.test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class HelloQueueConsumer implements MessageListener {
private String activemq_url;
private String activemq_user;
private String activemq_pw;
private String queue_name;
@Override
public void onMessage(Message message) {
//如果消息是TextMessage
// if (message instanceof TextMessage) {
// //强制转换一下
// TextMessage txtMsg = (TextMessage) message;
// try {
// //输出接收到的消息
// System.out.println("HaHa: I'v got " + txtMsg.getText());
// System.out.println("接收到消息后续处理......");
// } catch (JMSException e) {
// e.printStackTrace();
// }
// }
if (message instanceof ObjectMessage) {
//强制转换一下
ObjectMessage txtMsg = (ObjectMessage) message;
//输出接收到的消息
QueueModel model = null;
try {
model = (QueueModel) txtMsg.getObject();
System.out.println("HaHa: I'v got " + model.getId()+" , "+model.getDesc());
System.out.println("接收到消息后续处理......");
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public void receiver() {
try {
// 通过username,password,url创建连接工厂接口
ConnectionFactory factory = new ActiveMQConnectionFactory(this.getActivemq_user(), this.getActivemq_pw(), this.getActivemq_url());
// 通过连接工厂创建一个新的连接接口
Connection connection = factory.createConnection();
//打开连接
connection.start();
// 通过连接接口创建一个会话接口
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
// 会话接口创建有关主题的目标接口
Destination destination = session.createQueue(this.getQueue_name());
// 会话接口再根据目标接口来创建一个消息消费者接口
MessageConsumer consumer = session.createConsumer(destination);
//配置监听
consumer.setMessageListener(this);
} catch (Exception e) {
e.printStackTrace();
}
}
public String getActivemq_url() {
return activemq_url;
}
public void setActivemq_url(String activemq_url) {
this.activemq_url = activemq_url;
}
public String getActivemq_user() {
return activemq_user;
}
public void setActivemq_user(String activemq_user) {
this.activemq_user = activemq_user;
}
public String getActivemq_pw() {
return activemq_pw;
}
public void setActivemq_pw(String activemq_pw) {
this.activemq_pw = activemq_pw;
}
public String getQueue_name() {
return queue_name;
}
public void setQueue_name(String queue_name) {
this.queue_name = queue_name;
}
public static void main(String[] args) {
HelloQueueConsumer consumer = new HelloQueueConsumer();
consumer.setActivemq_url("tcp://localhost:61616");
consumer.setActivemq_user("system");
consumer.setActivemq_pw("manager");
consumer.setQueue_name("test_queue");
consumer.receiver();
}
}
activemq消息生产者与消息消费者简单例子的更多相关文章
- SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介、创建消息生产者、创建消息消费者、自定义消息通道、分组与持久化、设置 RoutingKey)
1.概念:SpringCloudStream 2.具体内容 2.1.SpringCloudStream 简介 SpringCloudStream 就是使用了基于消息系统的微服务处理架构.对于消息系统而 ...
- ActiveMQ发消息和收消息
来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- RabbitMQ消息队列之二:消费者和生产者
在使用RabbitMQ之前,需要了解RabbitMQ的工作原理. RabbitMQ的工作原理 RabbitMQ是消息代理.从本质上说,它接受来自生产者的信息,并将它们传递给消费者.在两者之间,它可以根 ...
- 基于Confluent.Kafka实现的KafkaConsumer消费者类和KafkaProducer消息生产者类型
一.引言 研究Kafka有一段时间了,略有心得,基于此自己就写了一个Kafka的消费者的类和Kafka消息生产者的类,进行了单元测试和生产环境的测试,还是挺可靠的. 二.源码 话不多说,直接上代码,代 ...
- kafka生产者与消费者的生产消息与消费消息所遇到的问题
当我们用API写kafka的时候 生产者生产消息,但是消费者接收不到消息?集群上启动消费者显示生产的消息.我们需要修改一下配置 (1)我们打开在虚拟机中修改kafka集群的配置文件 [root@spa ...
- 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of 'JmsMessagingTemplate' type found
使用ActiveMQ过程中,定义消息生产者: package com.sxd.jms.producer; import org.springframework.beans.factory.annota ...
- activemq读取剩余消息队列中消息的数量
先上原文链接: http://blog.csdn.net/bodybo/article/details/5647968 ActiveMQ在C#中的应用 ActiveMQ是个好东东,不必多说.Acti ...
- ActiveMQ(3)---ActiveMQ原理分析之消息持久化
持久化消息和非持久化消息的存储原理 正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的.能够存储的最大消息数据在${ActiveMQ_HOME}/conf/activemq.xml文 ...
随机推荐
- sci-hub 下载地址更新
# 2017-12-14 可用 http://www.sci-hub.tw/ 文献共享平台
- circos 绘制关系型图ribbon,并加入透明度
luminance = lum80<<include colors_fonts_patterns.conf>><colors># r,g,b,a color def ...
- 在delphi XE5 里面编译kbmmw4.3
Delphi XE5 仓促的发布了,虽然开始支持Android 开发了,但是经过试用,发现那个模拟器慢到无法用, 真机可以运行,但是调试也几乎无法用.由于XE5 的主要增加的是Android 的开发支 ...
- 手机PC文件传输
QQ啥的现在直接无法全部退出,很纠结后台运行,时不时的来条消息,明明电脑QQ还开着,越来越流氓了. 服务端代码: <%@ Page Language="C#" %> & ...
- 【Unity】2.0 第2章 Unity编辑器和基本操作
分类:Unity.C#.VS2015 创建日期:2016-03-26 本章要点: 1.掌握Unity 5.3.4编辑器视图和菜单项及其含义,这是入门的最基础部分,必须掌握. 2.了解最基本的操作,先学 ...
- c++ => new/delete
new的具体使用方式如下: 类型 *变量名 = new 类型; delete 变量 / delete[] 变量; 类型包括数组.结构体和类 数组申请动态内存后,要使用delete[]才能把内存清除干净 ...
- yum 报错:centos yum (28, 'Connection time-out') Trying other mirror.
前言: 在使用yum安装 软件时,经常出现 centos yum (28, 'Connection time-out') Trying other mirror. 或下面的那样情况imeout on ...
- UVa 210 Concurrency Simulator (双端队列+模拟)
题意:给定n个程序,每种程序有五种操作,分别为 var = constant(赋值),print var (打印), lock, unlock,end. 变量用小写字母表示,初始化为0,为程序所公有( ...
- python编码(五)
说说区位码.GB2312.内码和代码页 目前Windows的内核已经采用Unicode编码,这样在内核上可以支持全世界所有的语言文字.但是由于现有的大量程序和文档都采用了某种特定语言的编码,例如GBK ...
- The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly 上传一份代码的时候,出现了这个错误,然后就没有成功上传. 背景操作 主要是进行svn转换到git时候出错的,转换的 ...