三、发布/订阅模式
3.1、消息发送
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* 发布/订阅模式--消息发送
* 单连接、无持久化、无事务、消息接收自动确认
*/
public class TopicPublishers {
public static void main(String[] args) {
Connection conn = null;
try{
ActiveMQConnectionFactory connFactory =
new ActiveMQConnectionFactory("admin","showlike",
"tcp://localhost:61616");
conn = connFactory.createConnection();
conn.start();
Session session = conn.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("FirstTopic");
MessageProducer producer = session.createProducer(topic);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
long startTime = System.currentTimeMillis();
int i = 1;
do{
TextMessage message = session.createTextMessage();
message.setText(i+" , message_"+System.currentTimeMillis());
producer.send(message);
System.out.println("Sent message: "+message.getText());
// Thread.sleep(1000);
i++;
}while(i<=100000);
long endTime = System.currentTimeMillis();
long diff = endTime - startTime;
long diffSeconds = diff / 1000;
System.out.print("top publishers total time: "+diffSeconds + " seconds.");
}catch(Exception e){
e.printStackTrace();
}finally{
if(conn != null){
try {
conn.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
3.2、接收消息
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* 发布/订阅模式--消息接收
* 单连接、无持久化、无事务、消息接收自动确认
*/
public class TopicSubscribers {
public static void main(String[] args) {
Connection conn = null;
try{
ActiveMQConnectionFactory connFactory =
new ActiveMQConnectionFactory("admin","showlike",
"tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1");
conn = connFactory.createConnection();
conn.start();
Session session = conn.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("FirstTopic");
MessageConsumer consumer = session.createConsumer(topic);
long startTime = System.currentTimeMillis();
int i = 1;
do{
consumer.setMessageListener(new MessageListener(){
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
System.out.println("Received message: " + tm.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
i++;
}while(i<=100000);
long endTime = System.currentTimeMillis();
long diff = endTime - startTime;
long diffSeconds = diff / 1000;
System.out.print("top publishers total time: "+diffSeconds + " seconds.");
}catch(Exception e){
e.printStackTrace();
}finally{
if(conn != null){
try {
conn.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
分享到:
相关推荐
MQTT使用发布/订阅模型,发布者将消息发送到特定的主题,而订阅者则接收与他们订阅的主题相匹配的消息。 在SpringBoot项目中,我们可以通过以下步骤实现MQTT消息的发送和接收: 1. 添加依赖:在`pom.xml`文件中...
在这个简单的例子中,我们将探讨如何利用Ajax与ActiveMQ交互,发送和接收消息。首先,你需要在服务器端设置一个ActiveMQ实例,可以通过下载并安装ActiveMQ来完成。安装完成后,启动ActiveMQ服务,这通常会开启一个...
在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的开发过程。而ActiveMQ是Apache出品的一款...在实际生产环境中,ActiveMQ还可以与其他中间件、微服务架构结合,提供更强大的消息处理能力。
实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了
在本文中,我们将深入探讨如何使用`activemq-cpp`库在C++环境中发送和接收消息,并利用消息过滤器来实现特定的消息处理。`activemq-cpp`是Apache ActiveMQ的一个C++客户端,它提供了与ActiveMQ服务器进行交互的能力...
3. **消息类型**:理解JMS提供的不同消息类型,如文本消息、对象消息、流消息和二进制消息,以及如何通过ActiveMQ收发工具发送和接收这些消息。 4. **队列与主题**:熟悉ActiveMQ中的队列(Queue)和主题(Topic)...
在本文中,我们将深入探讨如何使用SpringBoot框架与Apache ActiveMQ集成,以便实现实时的消息发送和接收功能。首先,让我们简要了解一下SpringBoot和ActiveMQ。 **SpringBoot简介** SpringBoot是Spring框架的一个...
通过以上步骤,你可以成功地将Spring与ActiveMQ整合,实现后台消息的生产和消费,并在前台接收到这些消息。这种设计模式常用于大型分布式系统,如订单处理、日志收集、任务调度等场景,以提高系统的可靠性和响应速度...
在ActiveMQ中,发送和接收消息是一个核心功能,它允许应用程序之间进行异步通信,提高系统的可扩展性和解耦性。 在ActiveMQ中发送消息,通常涉及以下步骤: 1. **创建ConnectionFactory**:ConnectionFactory是...
此外,`Session`接口用于管理事务和同步消息的发送与接收。 2. **连接ActiveMQ**: 使用`ActiveMQConnectionFactory`创建一个连接工厂,然后使用它创建到ActiveMQ服务器的连接。连接可以通过`Connection`接口的`...
ActiveMQ,作为一款流行的开源消息中间件,也支持WebSocket协议,使得客户端可以通过WebSocket接口来接收和发送消息。 ActiveMQ是Apache软件基金会开发的消息队列产品,它遵循开放标准,如JMS(Java Message ...
项目使用springboot2.0.4搭建,一个父项目包含两个子项目:发送服务;监听服务;消息服务使用ActiveMQ 5.14.3,在docker中运行。 项目中有两种协议消息:activemq和mqtt。
这个"ActiveMQ接受和发送工具.rar"压缩包包含了用于与ActiveMQ交互的实用工具,方便用户进行消息的接收和发送操作。 在使用ActiveMQ时,了解以下几个关键知识点是至关重要的: 1. **Java Message Service (JMS)**...
在本文中,我们将深入探讨如何使用ActiveMQ发送和接收基于protobuf(Protocol Buffers)协议的消息,同时也会介绍如何进行ActiveMQ的简化封装和配置自动重连机制。 首先,protobuf是Google开发的一种数据序列化协议...
4. **发送消息**:通过`JmsTemplate`或者`JMSTemplate`的`convertAndSend`方法可以向ActiveMQ发送消息。 **二、邮件发送功能** 邮件发送功能通常涉及以下步骤: 1. **配置邮件服务器**:在配置文件中设置SMTP...
本文将深入探讨如何在Spring环境中使用ActiveMQ来实现消息的发送与接收,以提高系统的可扩展性和解耦性。 首先,我们需要了解Spring对ActiveMQ的支持。Spring提供了`spring-jms`模块,它包含了一组丰富的API和配置...
在这个项目中,“Android基于MQTT协议利用ActiveMQ发送消息给Android端接收”指的是Android客户端应用通过MQTT协议与ActiveMQ服务器交互,实现消息的发送和接收。这是一个典型的长连接通信方式,与传统的HTTP请求...
在本项目中,ActiveMQ与SpringMVC框架结合,实现了邮件的异步发送功能。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ是Apache软件基金会的产品,遵循JMS(Java消息服务)规范,支持多种协议,并且可以跨平台...
在本文中,我们将深入探讨如何使用Python与ActiveMQ进行交互,特别关注如何发送和接收消息。ActiveMQ是一款开源的消息中间件,由Java开发,它支持多种协议,包括AMQP、MQTT、OpenWire和Stomp。在Python环境中,通常...