activemq入门实例

哎喔别走 哎喔别走     2022-08-31     411

关键词:

  首先了解下jms。

  JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

JMS对象模型包含如下几个要素:

1.ConnectionFactory 创建Connection对象的工厂,针对两种不同的jms消息模型,分别有QueueConnectionFactory和TopicConnectionFactory两种。

2. Destination Destination的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的Destination也是某个队列或主题(即消息来源)。又称为消息队列,是实际的消息源

3. Connection Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装)。Connection可以产生一个或多个Session。跟ConnectionFactory一样,Connection也有两种类型:QueueConnection和TopicConnection。JMS连接(Connection)表示JMS客户端和服务器端之间的一个活动的连接,是由客户端通过调用连接工厂的方法建立的。

4. Session (Session)表示JMS客户与JMS服务器之间的会话状态。JMS会话建立在JMS连接上,表示客户与服务器之间的一个会话线程。ession是我们操作消息的接口。可以通过session创建生产者、消费者、消息等。同样,也分QueueSession和TopicSession。

5. 生产者(Message Producer)和消费者(Message Consumer)对象由Session对象创建,用于发送和接收消息。消息生产者分两种类型:QueueSender和TopicPublisher。消息消费者也分为两种类型:QueueReceiver和TopicSubscriber。

 

下面展示一个activemq的入门例子:

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Message;

import org.apache.activemq.ActiveMQConnectionFactory;

public class JmsOwnTest {
public static void main(String[] args) throws Exception {
thread(new HelloWorldProducer(), false);
thread(new HelloWorldProducer(), false);
Thread.sleep(1000);
thread(new HelloWorldConsumer(), false);
Thread.sleep(2000);
thread(new HelloWorldConsumer(), false);
}

public static void thread(Runnable runnable, boolean daemon) {
Thread brokerThread = new Thread(runnable);
brokerThread.setDaemon(daemon);
brokerThread.start();
}

public static class HelloWorldProducer implements Runnable {
public void run() {
try {
// 创建一个连接工厂
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = connectionFactory.createConnection();
//启动连接
connection.start();

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

// 创建一个名称为firstQueue的消息队列
Destination destination = session.createQueue("firstQueue");

// 通过session创建指定队列的消息生产者
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

// 消息内容
String text = "我来了! From: " + Thread.currentThread().getName() + " : " + this.hashCode();
TextMessage message = session.createTextMessage(text);

// 发送消息
System.out.println("发送消息内容: 【" + text + "】");
producer.send(message);

session.close();
connection.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}

public static class HelloWorldConsumer implements Runnable, ExceptionListener {
public void run() {
try {

// 创建连接工厂
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

// 创建连接
Connection connection = connectionFactory.createConnection();
//启动连接
connection.start();

connection.setExceptionListener(this);

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

// 创建一个名称为firstQueue的消息队列
Destination destination = session.createQueue("firstQueue");

//通过session创建指定队列的消息消费者
MessageConsumer consumer = session.createConsumer(destination);

Message message = consumer.receive(1000);

if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
System.out.println("收到的消息: 【" + text + "】");
} else {
System.out.println("收到的消息: 【" + message + "】");
}

consumer.close();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public synchronized void onException(JMSException ex) {
System.out.println("JMS异常.");
}
}
}

activemq入门实例

1.下载ActiveMQ去官方网站下载:http://activemq.apache.org/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1inactivemq.bat运行ActiveMQ程序。启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queu 查看详情

activemq入门实例

1.下载ActiveMQ去官方网站下载:http://activemq.apache.org/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1inactivemq.bat运行ActiveMQ程序。启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queu 查看详情

activemq入门实例

摘自:http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html1.下载ActiveMQ去官方网站下载:http://activemq.apache.org/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1inactivemq.ba 查看详情

activemq入门实例(转)

转载自:http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2360818.html1.下载ActiveMQ去官方网站下载:http://activemq.apache.org/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1inactivemq.b 查看详情

activemq入门系列二:入门代码实例(点对点模式)(代码片段)

在上一篇《ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)》中,大致介绍了ActiveMQ和一些概念,并下载、安装、启动他,还访问了他的控制台页面。这篇,就用代码实例说下如何实现消息的生产和消费。一、理论基础同RabbitMQ... 查看详情

activemq入门实例

  首先了解下jms。  JMS即Java消息服务(JavaMessageService)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。JMS对象模型包含如下几个要素... 查看详情

activemq入门系列三:发布/订阅模式(代码片段)

在上一篇《ActiveMQ入门系列二:入门代码实例(点对点模式)》中提到了ActiveMQ中的两种模式:点对点模式(PTP)和发布/订阅模式(Pub&Sub),详细介绍了点对点模式并用代码实例进行说明,今天就介绍下发布/订阅模式。一、... 查看详情

jms好文

深入浅出JMS(一)–JMS基本概念深入浅出JMS(二)–ActiveMQ简单介绍以及安装深入浅出JMS(三)–ActiveMQ简单的HelloWorld实例深入浅出JMS(四)–Spring和ActiveMQ整合的完整实例JMS简介与ActiveMQ实战JMS(Java消息服务)入门教程 查看详情

activemq简易入门

ActiveMQ官方下载地址:http://activemq.apache.org/download.html下载解压后,执行bin目录下activemq.bat启动mq服务找到lib目录并引入相关jar包Sender消息发送者类package com.ycj.activemq;import javax.jms.Connection;import javax.jms. 查看详情

apacheactivemq消息传递入门案例

1.下载ActiveMQ下载activeMQ:http://activemq.apache.org/我这里用的是5.9.0版本2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1inactivemq.bat运行ActiveMQ程序。启动ActiveMQ以后,登陆:http://localhost:8161 查看详情

activemq简单入门

一、创建一个简单的HelloWorld案例首先需要导入activemq-all-5.14.5.jar包,写生产端:packagecom.ietree.mq.helloworld;importjavax.jms.Connection;importjavax.jms.ConnectionFactory;importjavax.jms.DeliveryMode;importjavax.jms.Desti 查看详情

activemq入门:认识并安装activemq(windows下)(代码片段)

 一、什么是ActiveMQ度娘给出的定义:ApacheActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。ActiveMQ的官网打出的标语(如上图):Fle... 查看详情

activemq从入门到精通

这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTPandPub/Sub)、与Spring整合、ActiveMQ集群、监控与配置优化等。话不多说,我们来一起瞧一瞧!JMS首先来说较早... 查看详情

activemq入门helloworld

1.下载安装ActiveMQ官网下载地址:http://activemq.apache.org/download.htmlActiveMQ提供了Windows和Linux、Unix等几个版本,我选择了Windows版本下进行开发。下载完压缩包后,直接解压: 目录:        bin存放的是... 查看详情

activemq+nodejs+stomp极简入门

前提 安装ActiveMQ和Nodejs测试步骤1.执行binwin32activemq.bat启动MQ服务2.打开http://localhost:8161/admin/topics.jsp用户名和密码都是admin3.下载Stompnpminstallstomp-client4.js的测试代码varStomp=require(‘stomp-client‘);vardestinat 查看详情

activemq从入门到精通

接上一篇《ActiveMQ从入门到精通(一)》,本篇主要讨论的话题是:消息的顺序消费、JMSSelectors、消息的同步/异步接受方式、Message、P2P/PubSub、持久化订阅、持久化消息到MySQL以及与Spring整合等知识。消息的顺序消费在上一篇文... 查看详情

activemq入门案例-生产者代码实现

<–start–> 使用Java程序操作ActiveMQ生产消息,代码的复杂度较高,但也没有默写下来的必要。 开发ActiveMQ首先需要导入activemq-all.jar包,如果是maven项目,就需要在pom文件中导入坐标。本例中创建的是一个maven项目,所... 查看详情

从入门到精通的activemq

这是ActiveMQ系列的最后一篇文章,主要是关于ActiveMQ集群,这里采用的方式是:Zookeeper+LevelDB+ActiveMQ。前面2篇博客地址如下:《从入门到精通的ActiveMQ(一)》、《从入门到精通的ActiveMQ(二)》。利用Zookeeper实现ActiveMQ的高可用... 查看详情