p2p模式

生产者

package com.activemq.activemqdemo.p2p;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class JMSProducer {

    public static final String ACTIVE_URL = "tcp://127.0.0.1:61616";
// 队列名称
public static final String QUEUE_NAME = "index"; public static void main(String[] args) throws JMSException {
// 1)获取工厂 ConnectionFactory,使用默认的用户名和密码admin/admin, 指定URL
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
// 2)获取连接
Connection connection = connectionFactory.createConnection();
// 3)启动连接
connection.start();
// 4)创建Session ,参数transacted:事务,acknowledgeMode响应模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5)创建目的地: 队列
Queue queue = session.createQueue(QUEUE_NAME);
// 6)创建生产者,参数destination表示目的地---Queue
MessageProducer messageProducer = session.createProducer(queue);
// 7)发送消息
for (int i = 1 ; i <= 10; i++){
TextMessage textMessage = session.createTextMessage("index队列中的消息:" + i);
messageProducer.send(textMessage);
}
// 8)关闭资源
messageProducer.close();
session.close();
connection.close(); } }

消费者

package com.activemq.activemqdemo.p2p;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException; public class JMSConsumer {
public static final String ACTIVE_URL = "tcp://127.0.0.1:61616";
// 队列名称
public static final String QUEUE_NAME = "index"; public static void main(String[] args) throws JMSException, IOException {
// 1)获取工厂 ConnectionFactory,使用摸摸人的用户名和密码admin/admin, 指定URL
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
// 2)获取连接
Connection connection = connectionFactory.createConnection();
// 3)启动连接
connection.start();
// 4)创建Session ,参数transacted:事务,acknowledgeMode响应模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5)创建目的地: 队列
Queue queue = session.createQueue(QUEUE_NAME);
// 6)创建消费者,
MessageConsumer messageConsumer = session.createConsumer(queue);
// 7)接收消息: 获取队列中的所有消息,消费者一直接收消息
/*while (true){
TextMessage msg = (TextMessage) messageConsumer.receive();
if (msg != null){
// 接收到消息了
System.out.println("JMSConsumer接收到消息了:"+msg.getText());
}else {
// 队列中的消息全部接收完毕
System.out.println("-----消息接收完成----");
break;
}
}*/ // 7)通过监听的方式接受消息,有消息就接受 没消息就结束了监听 方法参数是MessageListenter接口 ,匿名及内部类非阻塞的
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
// 对象 instanceof 类型
TextMessage textMessage = (TextMessage) message;
if (message != null && message instanceof TextMessage){ try {
System.out.println("JMSConsumer接收到消息了:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
// 8)关闭资源
messageConsumer.close();
session.close();
connection.close(); }
}
package com.activemq.activemqdemo.p2p;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class JMSConsumer2 {

    public static final String ACTIVE_URL = "tcp://127.0.0.1:61616";
// 队列名称
public static final String QUEUE_NAME = "index"; public static void main(String[] args) throws JMSException {
// 1)获取工厂 ConnectionFactory,使用摸摸人的用户名和密码admin/admin, 指定URL
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
// 2)获取连接
Connection connection = connectionFactory.createConnection();
// 3)启动连接
connection.start();
// 4)创建Session ,参数transacted:事务,acknowledgeMode响应模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5)创建目的地: 队列
Queue queue = session.createQueue(QUEUE_NAME);
// 6)创建消费者,
MessageConsumer messageConsumer = session.createConsumer(queue);
// 7)接收消息: 获取队列中的所有消息,消费者一直接收消息
while (true){
TextMessage msg = (TextMessage) messageConsumer.receive();
if (msg != null){
// 接收到消息了
System.out.println("JMSConsumer接收到消息了:"+msg.getText());
}else {
// 队列中的消息全部接收完毕
System.out.println("-----消息接收完成----");
break;
}
}
// 8)关闭资源
messageConsumer.close();
session.close();
connection.close(); }
}

Topic

生产者

package com.activemq.activemqdemo.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class JMSProducer {

    public static final String ACTIVE_URL = "tcp://127.0.0.1:61616";
// 队列名称
public static final String TOPIC_NAME = "index-topic"; public static void main(String[] args) throws JMSException {
// 1)获取工厂 ConnectionFactory,使用默认的用户名和密码admin/admin, 指定URL
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
// 2)获取连接
Connection connection = connectionFactory.createConnection();
// 3)启动连接
connection.start();
// 4)创建Session ,参数transacted:事务,acknowledgeMode响应模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5)创建目的地: 主题
Topic topic = session.createTopic(TOPIC_NAME);
// 6)创建生产者,参数destination表示目的地---topic
MessageProducer messageProducer = session.createProducer(topic);
// 7)发送消息
for (int i = 1 ; i <= 10; i++){
TextMessage textMessage = session.createTextMessage("index队列中的消息:" + i);
messageProducer.send(textMessage);
}
// 8)关闭资源
messageProducer.close();
session.close();
connection.close(); } }

消费者

package com.activemq.activemqdemo.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException; public class JMSConsumer {
public static final String ACTIVE_URL = "tcp://127.0.0.1:61616";
// 队列名称
public static final String TOPIC_NAME = "index-topic"; public static void main(String[] args) throws JMSException, IOException {
// 1)获取工厂 ConnectionFactory,使用摸摸人的用户名和密码admin/admin, 指定URL
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
// 2)获取连接
Connection connection = connectionFactory.createConnection();
// 3)启动连接
connection.start();
// 4)创建Session ,参数transacted:事务,acknowledgeMode响应模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5)创建目的地: 队列
Topic topic = session.createTopic(TOPIC_NAME);
// 6)创建消费者,
MessageConsumer messageConsumer = session.createConsumer(topic); // 7)通过监听的方式接受消息,有消息就接受 没消息就结束了监听 方法参数是MessageListenter接口 ,匿名及内部类非阻塞的
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
// 对象 instanceof 类型
TextMessage textMessage = (TextMessage) message;
if (message != null && message instanceof TextMessage){ try {
System.out.println("消费者1的主题接收到消息了:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
// 8)关闭资源
messageConsumer.close();
session.close();
connection.close(); }
}
package com.activemq.activemqdemo.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException; public class JMSConsumer2 { public static final String ACTIVE_URL = "tcp://127.0.0.1:61616";
// 队列名称
public static final String TOPIC_NAME = "index-topic"; public static void main(String[] args) throws JMSException, IOException {
// 1)获取工厂 ConnectionFactory,使用摸摸人的用户名和密码admin/admin, 指定URL
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
// 2)获取连接
Connection connection = connectionFactory.createConnection();
// 3)启动连接
connection.start();
// 4)创建Session ,参数transacted:事务,acknowledgeMode响应模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5)创建目的地: 主题
Topic topic = session.createTopic(TOPIC_NAME);
// 6)创建消费者,
MessageConsumer messageConsumer = session.createConsumer(topic);
// 7)通过监听的方式接受消息,有消息就接受 没消息就结束了监听 方法参数是MessageListenter接口 ,匿名及内部类非阻塞的
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
// 对象 instanceof 类型
TextMessage textMessage = (TextMessage) message;
if (message != null && message instanceof TextMessage){ try {
System.out.println("消费者2的主题接收到消息了:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
// 8)关闭资源
messageConsumer.close();
session.close();
connection.close(); }
}

-----------

--------------------------------------------------------------------------------------------------------------------------------------------

------------

ActiveMQ代码-01的更多相关文章

  1. 消息队列(MQ)入门-activemq,代码级别

    第一种:activemq: 1.从官网下载apache-activemq-5.15.3-bin.zip并解压: 2.启动activemq, CMD--/bin/activemq start ,访问12 ...

  2. 改善JAVA代码01:考虑静态工厂方法代替构造器

    前言 系列文章:[传送门]   每次开始新的一本书,我都会很开心.新书新心情. 正文 静态工厂方法代替构造器 说起这个,好多可以念叨的.做了一年多的项目,慢慢也有感触. 说起构造器 大家很明白,构造器 ...

  3. ActiveMQ基础01——Linux下载安装ActiveMQ

    1.下载 下载地址:http://activemq.apache.org/ 点击按钮 下载Linux下最新版安装包,点击即可下载 2.安装ActiveMQ 将之前下载的安装包上传到linux当中,一般 ...

  4. Java连接ActiveMQ代码示例(Producer和Consumer)

    import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; ...

  5. 常用jQuery代码01

    1.点击获得当前元素索引,实现切换相应的图片路径 $(".li").bind("click", function () { var _num = $(this) ...

  6. CSS经验分享:如何书写可维护的CSS代码01

    转自:http://www.cnblogs.com/hxling/archive/2013/02/21/2920520.html 一.在样式表开头添加一个注释块,用以描述这个样式表的创建日期.创建者. ...

  7. ActiveMQ 笔记—01

  8. 【智能算法】变邻域搜索算法(Variable Neighborhood Search,VNS)超详细解析和TSP代码实例以及01背包代码实例

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 00 目录 局部搜索再次科普 变邻域搜索 造轮子写代码 01 局部搜索科普三连 虽然之前做的很多篇启发式的算法都有跟大家提过局部 ...

  9. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

随机推荐

  1. Ubuntu - root, sudo, su, passwd

    1.rootubuntu中默认是不使用root账户的,当然也是可以开启并设置为默认登录账户的,但ubuntu不建议使用而已,毕竟root账户拥有所有权限,可能会出现一些误操作之类.在普通账户中,如果遇 ...

  2. 基于SSM风格的Java源代码生成器

    一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...

  3. 分布式缓存NCache使用

    NCache作为缓存优点币Redis有优势,但是收费的所以选用的不多吧.下面简单实操一下: 首先官网下载组件NCache Download Center (alachisoft.com),这里选择企业 ...

  4. Apache-log4j漏洞复现

    前言:昨天晚上当我还在睡梦中时,圈内爆出了核弹级的漏洞,今天我复现一下, 再开始前我们先建立一个maven项目,将pom.xml文件导入 <?xml version="1.0" ...

  5. [Python]小白入门时遇到的各种问题

    Q:关于Python2.X和Python3.X各种版本有什么区别,小白应该选哪个? A: 1.背景及简要介绍 Python 2 发布于 2000 年年底. 随着 Python 2 的不断发展,更多的功 ...

  6. 免费报表软件下载推荐------值得办公小白下载的Web报表工具

    Smartbi免费报表软件更是国内报表产品的新高峰,它直接使用Excel作为报表设计器,易用性.功能性.运行速度都得到了大幅提升,遥遥领先竞品.该产品以"真Excel"为最大特色, ...

  7. for循环中i++和++i 的区别(转载)

    ++i是先执行i=i+1再使用i的值,而i++是先使用i的值再执行i=i+1: for循环的执行顺序是这样的: for(a;b;c){ d; } 进入for循环,首先执行起始语句a,然后判断语句b是否 ...

  8. N种排序算法

    本文根据<算法(第4版)>和<算法图解>整理.文中代码使用python编写. (一)选择排序 每次遍历整个数组,选出其中最小值.如果数组长度为n,则需要(n-1)+(n-2)+ ...

  9. 知识增广的预训练语言模型K-BERT:将知识图谱作为训练语料

    原创作者 | 杨健 论文标题: K-BERT: Enabling Language Representation with Knowledge Graph 收录会议: AAAI 论文链接: https ...

  10. Docker学习笔记(详细)

    目录 01 介绍 02 Docker安装 03 Docker常用命令 04 Docker镜像 05 Docker容器数据卷 06 Dockerfile解析 Dockerfile构建过程解析 Docke ...