activeMQ学习笔记 -- day02安装测试

一、安装ActiveMQ

1、安装jdk环境

activeMq运行需要jdk环境

2、创建文件夹,上传压缩包,并解压


3、进入bin目录下,启动activeMq

[root@localhost bin]# ./activemq start


4、浏览器访问activeMq

访问地址:http://192.168.200.134:8161/admin/

用户名:admin

密码:admin


二、使用java代码调用activemq

1、点对点模式

(1)、生产者代码


package com.activemq.demo;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

public class P2PDemo {

	/**
	 * 测试点对点模式的发布者
	 */
	@Test
	public void testP2pProducer() throws Exception {
		// 远程activemq中broker的访问URL
		String brokerURL = "tcp://192.168.25.128:61616";
		// 创建ConnectionFactory,连接activemq的broker
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
		// 通过ConnectionFactory,创建Connection
		Connection connection = connectionFactory.createConnection();
		// 启动Connection
		connection.start();
		// 通过Connection创建Session
		// 第一个参数:是否支持事务,如果为true,则会忽略第二个参数,被jms服务器设置为SESSION_TRANSACTED
		// 第二个参数为false时,paramB的值可为Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE其中一个。
		// Session.AUTO_ACKNOWLEDGE为自动确认,客户端发送和接收消息不需要做额外的工作。哪怕是接收端发生异常,也会被当作正常发送成功。
		// Session.CLIENT_ACKNOWLEDGE为客户端确认。客户端接收到消息后,必须调用javax.jms.Message的acknowledge方法,jms服务器才会当作发送成功,并删除消息。
		// DUPS_OK_ACKNOWLEDGE允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 通过Session创建Destination目的地(Queue\Topic)
		Queue queue = session.createQueue("test-p2p");
		// 通过Session创建Producer
		MessageProducer producer = session.createProducer(queue);
		// 通过Session创建Message
		TextMessage message = session.createTextMessage("测试点对点模式发送接收消息");
		// 调用Producer的send方法发送Message到指定的Destination
		producer.send(message);
		// 释放资源
		producer.close();
		session.close();
		connection.close();
	}

}

(2)、消费者代码


package com.activemq.demo;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

public class P2PDemo {

	/**
	 * 测试点对点模式的消费者
	 * @throws Exception
	 */
	@Test
	public void testP2pConsumer() throws Exception {
		// 远程activemq中broker的访问URL
		String brokerURL = "tcp://192.168.25.128:61616";
		// 创建ConnectionFactory
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
		// 创建Connection
		Connection connection = connectionFactory.createConnection();
		// 启动Connection
		connection.start();
		// 创建Session
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 创建Destination
		Queue queue = session.createQueue("test-p2p");
		// 创建Consumer
		MessageConsumer consumer = session.createConsumer(queue);
		// 创建MessageListener接收消息,以后只要有消息,就会通过这个监听器接收到
		consumer.setMessageListener(new MessageListener() {

			public void onMessage(Message message) {
				// 处理消息
				try {
					if (message instanceof TextMessage) {
						TextMessage textMessage = (TextMessage) message;
						System.out.println(textMessage.getText());
					}
				} catch (Exception e) {
				}
			}
		});

		// 等待
		System.in.read();

		// 释放资源
		consumer.close();
		session.close();
		connection.close();
	}
}

2、发布订阅模式

(1)、生产者代码

package test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

/**
 * 生产者
 * @author Administrator
 *
 */
public class TestActivemq {


	/**
	 * 订阅发布模式
	 * @throws Exception
	 */
	@Test
	public void testTopicProducer() throws Exception {
		// 远程activemq中broker的访问URL
		String brokerURL = "tcp://192.168.200.134:61616";
		// 创建ConnectionFactory,连接activemq的broker
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
		// 通过ConnectionFactory,创建Connection
		Connection connection = connectionFactory.createConnection();
		// 启动Connection
		connection.start();
		// 通过Connection创建Session
		// 第一个参数:是否启动activemq事务
		// 第二个参数:应答模式,如果第一个参数为true,则该参数无效,应答模式有:自动应答,手动应答等
		// 应答模式就是消费者给broker的应答,如果消息消费成功,broker会删除该消息
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 通过Session创建Destination目的地(Queue\Topic)
		Topic topic = session.createTopic("test-topic");
		// 通过Session创建Producer
		MessageProducer producer = session.createProducer(topic);
		// 通过Session创建Message
		TextMessage message = session.createTextMessage("测试发布订阅模式发送接收消息");
		// 调用Producer的send方法发送Message到指定的Destination
		producer.send(message);
		// 释放资源
		producer.close();
		session.close();
		connection.close();
	}
}

(2)、消费者代码

package test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

/**
 * 消费者
 * @author Administrator
 *
 */
public class TestConsumer {


	/**
	 * 发布订阅模式
	 * @throws Exception
	 */
	@Test
	public void testTopicConsumer() throws Exception {
		// 远程activemq中broker的访问URL
		String brokerURL = "tcp://192.168.200.134:61616";
		// 创建ConnectionFactory
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
		// 创建Connection
		Connection connection = connectionFactory.createConnection();
		// 启动Connection
		connection.start();
		// 创建Session
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 创建Destination
		Topic topic = session.createTopic("test-topic");
		// 创建Consumer
		MessageConsumer consumer = session.createConsumer(topic);

		System.out.println("console 3:");
		// 创建MessageListener接收消息
		consumer.setMessageListener(new MessageListener() {

			@Override
			public void onMessage(Message message) {
				// 处理消息
				try {
					if (message instanceof TextMessage) {
						TextMessage textMessage = (TextMessage) message;
						System.out.println(textMessage.getText());
					}
				} catch (Exception e) {
				}
			}
		});

		// 等待
		System.in.read();

		// 释放资源
		consumer.close();
		session.close();
		connection.close();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值