Java实现

添加相应的jar包

<dependency>

<groupId>org.apache.activemq</groupId>

<artifactId>activemq-all</artifactId>

<version>x.xx.x</version>

</dependency>

创建生产者类(点对点)

public class ProducerTest {

// 异步发送asyn

// 死信队列 DLQ

// 文件上传

// header properties使用

// jdbc存储

// byteMsg objMsg inputMsg

// mq ptp 的使用场景

// mq中所有的队列名以及每个队列中未被消费的消息数量

// mq sub/pub 的使用场景

@Test

public void testQueueProducer() throws JMSException{

// 第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。

//brokerURL服务器的ip及端口号

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.114.129:61616");

// 第二步:使用ConnectionFactory对象创建一个Connection对象

Connection connection = connectionFactory.createConnection();

// 第三步:开启连接,调用Connection对象的start方法

connection.start();

// 第四步:使用Connection对象创建一个Session对象。

//第一个参数:是否开启事务。true:开启事务,第二个参数忽略。

//第二个参数:当第一个参数为false时,才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。

//参数:队列的名称。

Queue queue = session.createQueue("test-queue");

// 第六步:使用Session对象创建一个Producer对象。

MessageProducer producer = session.createProducer(queue);

producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

// 第七步:创建一个Message对象,创建一个TextMessage对象。

/*TextMessage message = new ActiveMQTextMessage();

message.setText("hello activeMq,this is my first test.");*/

TextMessage textMessage = session.createTextMessage("hello activeMq,this is my first test.");

producer.send(textMessage);

producer.close();

session.close();

connection.close();

}

}

创建消费者类(点对点)

public class ConsumerTest {

@Test

public void testQueueConsumer() throws JMSException, IOException{

// 第一步:创建一个ConnectionFactory对象。

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.114.129:61616");

// 第二步:从ConnectionFactory对象中获得一个Connection对象。

Connection connection = connectionFactory.createConnection();

// 第三步:开启连接。调用Connection对象的start方法。

connection.start();

// 第四步:使用Connection对象创建一个Session对象。

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 第五步:使用Session对象创建一个Destination对象。和发送端保持一致queue,并且队列的名称一致。

Queue queue = session.createQueue("queue.stu");

// 第六步:使用Session对象创建一个Consumer对象。

MessageConsumer consumer = session.createConsumer(queue);

// 第七步:接收消息。

consumer.setMessageListener(new MessageListener()

@Override

public void onMessage(Message message) {

try {

//if (TextMessage.class.isAssignableFrom(message.getClass()))

if (message instanceof TextMessage) {

TextMessage textMessage = (TextMessage) message;

String text = null;

//取消息的内容

text = textMessage.getText();

// 第八步:打印消息。

System.out.println(text);

}

} catch (JMSException e) {

e.printStackTrace();

}

}

});

//等待键盘输入

System.in.read();

// 第九步:关闭资源

consumer.close();

session.close();

connection.close();

}

}

运行active服务器验证实现情况

发布(对点对点代码修改 创建Topic Destination)

// 第五步:使用Session对象创建一个Destination对象(topicqueue),此处创建一个topic对象。

// 参数:话题的名称。

Topic topic = session.createTopic("test-topic");

// 第六步:使用Session对象创建一个Producer对象。

MessageProducer producer = session.createProducer(topic);

订阅(对点对点代码修改 创建Topic Destination)

// 第五步:使用Session对象创建一个Destination对象。和发送端保持一致topic,并且话题的名称一致。

Topic topic = session.createTopic("test-topic");

// 第六步:使用Session对象创建一个Consumer对象。

MessageConsumer consumer = session.createConsumer(topic);

ActiveMQ_3Java实现的更多相关文章

随机推荐

  1. 一切为了解决隐私问题,绿洲实验室Ekiden协议介绍

    绿洲实验室官网截图 下一代区块链平台的竞争已经悄然展开,每个月我们都能看到新成立的创业公司宣称,他们要采用区块链解决所有问题.大约80-90%的区块链项目,运行在像Ethereum这样的平台上. 创建 ...

  2. VRay材质练习(一):水、玻璃、牛奶

    软件环境 a) 3ds max 2014b) V-Ray 3.60.03 渲染效果图集 玻璃杯 玻璃杯+水 玻璃杯+牛奶 材质详细参数 一.玻璃材质 Diffuse (0,0,0), Roughnes ...

  3. C++中宽字符类型(wchar_t)的编码

    转载自: http://www.ituring.com.cn/article/111027 问题的起因是和一个朋友讨论不同编码的转换问题,说到了wchar_t的类型,朋友的看法是,wchar_t的编码 ...

  4. [二维码开发]二维码开发入门级demo

    最近开发一个项目,涉及到二维码开发,于是乎就到网上找下直接可用的资源,遇到两个问题: 1.网上资源不够完整,找到完整的资源,需要下载分,这个你知道的 2.ThoughtWorks.QRCode版本不对 ...

  5. 谷歌浏览器内核Cef js代码整理(二) 滚动条

    1.隐藏滚动条 document.documentElement.style.overflow = 'hidden';隐藏竖向滚动条:document.documentElement.style.ov ...

  6. wireshark抓本地回环包

    问题描述: 在网络程序开发的过程中,我们往往会把本机既作为客户端又作为服务器端来调试代码,使得本机自己和自己通信.但是wireshark此时是无法抓取到数据包的,需要通过简单的设置才可以 方法一:Wi ...

  7. 学习笔记:SASS

    SASS: http://www.sass.hk/sass-course.html  SASS 2015-10-10 http://sass.bootcss.com/docs/sass-referen ...

  8. django admin 设置(转载https://www.cnblogs.com/wumingxiaoyao/p/6928297.html)

    Django admin 一些有用的设置   Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理数据.后台管理可以在各个app的admin.py文件中进行控制.以下是我最近摸 ...

  9. 一些值得收藏的MySQL知识链接

    https://yq.aliyun.com/articles/5533(死锁分析的很好的一篇文章) http://hedengcheng.com/?spm=5176.100239.blogcont55 ...

  10. jdango 使用oss存储

    安装django-aliyun-oss2-storage-0.1.5.tar.gz settings文件添加 MEDIA_ROOT = os.path.join(BASE_DIR,'upload/') ...