ActiveMQ简单实现之一对一生产和消费

第一步: 下载ActiveMQ工具包 url:http://activemq.apache.org

第二部解压并启动:

全家福

启动方式: 注 不要直接启动bin目录下的bat  按系统版本启动相应的bat  比如我的是64位

启动完毕 进入控制台  默认地址 http://127.0.0.1:8161/admin   账号admin密码admin

第三部:创建java工程简单实现简单单点发布和消费 导入activemq-all-xxx.jar

创建消息生产者类Producer.java

package com.sgor.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
 * 消息生产者类
 * @author xixiao
 *
 */
public class Producer {
	public static void main(String[] args){
		ConnectionFactory connectionFactory; //创建链接工厂
		Connection connection = null;//链接
		Session session;//创建会话
		Destination destination;//消息目的地 消息队列
		MessageProducer messageProducer;//消息生产者
		//实例化链接工厂  参数为 用户,密码,url
		connectionFactory = new ActiveMQConnectionFactory("xixiao", "xixiao", ActiveMQConnection.DEFAULT_BROKER_URL);
		try {
			connection=connectionFactory.createConnection();//通过链接工厂创建链接
			connection.start();//启动链接
			//创建会话 Session.AUTO_ACKNOWLEDGE。receive 或MessageListener.onMessage()成功返回的时候,自动确认收到消息。
			session =connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			//创建一个消息队列名称为hello ActiveMQ 消息队列中可包含需要发布消息
			destination = session.createQueue("Hello ActiveMQ");
			//将创建的消息队列hello ActiveMQ交给消息发布者messageProdecer
			messageProducer=session.createProducer(destination);
			for (int i = 0; i <5 ; i++) {
				//生产5条消息
				TextMessage message=session.createTextMessage(i+"条消息");
				System.out.println(message.getText());                    //发布消息
				messageProducer.send(message);
			}
			//提交事物
			session.commit();
		} catch (JMSException e) {
			e.printStackTrace();
		}finally{
			try {
				//关闭连接
				connection.close();
			} catch (JMSException e) {
				e.printStackTrace();
			}
		}

	}
}

创建消息消费类

这里使用了一个Listener实现了MessageListener中的onMessage  当这个方法成功返回时会话可以自动确认消息被消费

package com.sgor.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;

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

public class Consumer {
	public static void main(String[] args) {
		ConnectionFactory connectionFactory;
		Connection connection = null;
		Session session;
		Destination destination;
		MessageConsumer messageConsumer;
		connectionFactory = new ActiveMQConnectionFactory("xixiao", "xixiao", ActiveMQConnection.DEFAULT_BROKER_URL);
		try {
			//通过链接工厂创建链接
			connection  = connectionFactory.createConnection();
			connection.start();//启动链接
			//这里直接设为false  不需要事物
			session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			destination = session.createQueue("Hello ActiveMQ"); //创建消息队列 用于接收发布的消息
			messageConsumer = session.createConsumer(destination);
			/**
			 * 监听生产者方式接受消息,生产者产生消息才开始接收 需要监听器 实现MessageListener (javax.jms.MessageListener包)
			 */
			messageConsumer.setMessageListener(new Listener());
		} catch (JMSException e) {
			e.printStackTrace();
		}

	}
}

Listener

package com.sgor.activemq;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class Listener implements MessageListener{

	@Override
	public void onMessage(Message arg0) {
		try {
			System.out.println("消息:"+((TextMessage)arg0).getText());
		} catch (JMSException e) {
			e.printStackTrace();
		}

	}

}

测试一下:

首先生产消息

查看控制台》》点击Queues 待处理消息5  消费者0 列队中的消息5   成功生产了5条消息

接下来执行消费类,将队列中的消息确认

打开控制台查看消息确认情况   待消费消息0 消费者1 消费消息5   消息被1个客户消费

时间: 2024-10-06 11:02:36

ActiveMQ简单实现之一对一生产和消费的相关文章

ActiveMQ简单简绍(“点对点通讯”和 “发布订阅模式”)

ActiveMQ简单简绍 MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求.其中较为成熟的MQ产品有IBMWEBSPHERE MQ. MQ特点: M

深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入浅出JMS(二)–ActiveMQ简单介绍以及安装,我们介绍了消息中间件ActiveMQ,安装,启动,以及优缺点. 这篇博文,我们使用ActiveMQ为大家实现一种点对点的消息模型.如果你对点对点模型的认识较浅,可以看一下第一篇博文的介绍. JMS其实并没有想象的那么高大上,看完这篇博文之后,你就知

Kafka 使用Java实现数据的生产和消费demo

前言 在上一篇中讲述如何搭建kafka集群,本篇则讲述如何简单的使用 kafka .不过在使用kafka的时候,还是应该简单的了解下kafka. Kafka的介绍 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Kafka 有如下特性: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能. 高吞吐率.即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输. 支持Kafka Serv

JAVA代码之RocketMQ生产和消费数据

一.启动RocketMQ [[email protected] ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1               localhost.localdomain localhost ::1             localhost6.localdomain6

ActiveMQ 简单介绍以及安装

一直知道这个jms,却没有机会用到.今天玩玩! 为什么要学习,使用JMS 在JAVA中,如果两个应用程序之间对各自都不了解,甚至这两个程序可能部署在不同的大洲上,那么它们之间如何发送消息呢?举个例子,一个应用程序A部署在印度,另一个应用程序部署在美国,然后每当A触发某件事后,B想从A获取一些更新信息.当然,也有可能不止一个B对A的更新信息感兴趣,可能会有N个类似B的应用程序想从A中获取更新的信息.在这种情况下,JAVA提供了最佳的解决方案-JMS,完美解决了上面讨论的问题.JMS同样适用于基于事

ActiveMQ 简单应用

ActiveMQ简单应用到复杂的订单模块,提高前台的访问速度. 一.当提交订单后,发送消息给ActiveMQ. @Service public class JmsSend { private static ConnectionFactory connectionFactory =new ActiveMQConnectionFactory("failover:(tcp://192.168.174.104:61616,tcp://192.168.174.104:61676)?randomize=fa

Python 基于Python结合pykafka实现kafka生产及消费速率&amp;主题分区偏移实时监控

基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控   By: 授客 QQ:1033553122   1.测试环境 python 3.4 zookeeper-3.4.13.tar.gz 下载地址1: http://zookeeper.apache.org/releases.html#download https://www.apache.org/dyn/closer.cgi/zookeeper/ https://mirrors.tuna.tsinghua.edu

ActiveMQ简单入门

一.创建一个简单的Hello World案例 首先需要导入activemq-all-5.14.5.jar包,写生产端: package com.ietree.mq.helloworld; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProduc

【转】深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

这篇博文,我们使用ActiveMQ为大家实现一种点对点的消息模型.如果你对点对点模型的认识较浅,可以看一下第一篇博文的介绍. JMS其实并没有想象的那么高大上,看完这篇博文之后,你就知道什么叫简单,下面直接进入主题. 开发环境 我使用的是apache-activemq-5.15.0 win版本的,需要注意的是,开发的时候,要将apache-activemq-5.15.0-bin.zip解压缩后里面的activemq-all-5.15.0.jar包加入到classpath下面,这个包包含了所有jm