java远程连接调用Rabbitmq的实例代码
发布时间 - 2026-01-11 02:22:34 点击率:次本文介绍了java远程连接调用Rabbitmq,分享给大家,希望此文章对各位有所帮助。

打开IDEA创建一个maven工程(Java就可以了)。
pom.xml文件如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zhenqi</groupId>
<artifactId>rabbitmq-study</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>rabbitmq-study</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.1.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</project>
为了能远程访问rabbitmq,则需要编辑 /etc/rabbitmq/rabbitmq.conf,添加以下内容。
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["asdf"]}]}
]
添加administrator角色
rabbitmqctl set_user_tags openstack administrator
创建抽象队列 EndPoint.java
package com.zhenqi;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/**
* Created by wuming on 2017/7/16.
*/
public abstract class EndPoint {
protected Channel channel;
protected Connection connection;
protected String endPointName;
public EndPoint(String endpointName) throws Exception {
this.endPointName = endpointName;
//创建一个连接工厂 connection factory
ConnectionFactory factory = new ConnectionFactory();
//设置rabbitmq-server服务IP地址
factory.setHost("192.168.146.128");
factory.setUsername("openstack");
factory.setPassword("rabbitmq");
factory.setPort(5672);
factory.setVirtualHost("/");
//得到 连接
connection = factory.newConnection();
//创建 channel实例
channel = connection.createChannel();
channel.queueDeclare(endpointName, false, false, false, null);
}
/**
* 关闭channel和connection。并非必须,因为隐含是自动调用的。
* @throws IOException
*/
public void close() throws Exception{
this.channel.close();
this.connection.close();
}
}
生产者Producer.java
生产者类的任务是向队列里写一条消息
package com.zhenqi;
import org.apache.commons.lang.SerializationUtils;
import java.io.Serializable;
/**
* Created by wuming on 2017/7/16.
*/
public class Producer extends EndPoint {
public Producer(String endpointName) throws Exception {
super(endpointName);
}
public void sendMessage(Serializable object) throws Exception {
channel.basicPublish("",endPointName, null, SerializationUtils.serialize(object));
}
}
消费者QueueConsumer.java
消费者可以以线程方式运行,对于不同的事件有不同的回调函数,其中最主要的是处理新消息到来的事件。
package com.zhenqi;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.ShutdownSignalException;
import org.apache.commons.lang.SerializationUtils;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by wuming on 2017/7/16.
*/
public class QueueConsumer extends EndPoint implements Runnable, Consumer {
private Logger LOG=Logger.getLogger(QueueConsumer.class);
public QueueConsumer(String endpointName) throws Exception {
super(endpointName);
}
public void handleConsumeOk(String s) {
}
public void handleCancelOk(String s) {
}
public void handleCancel(String s) throws IOException {
}
public void handleShutdownSignal(String s, ShutdownSignalException e) {
}
public void handleRecoverOk(String s) {
LOG.info("Consumer "+s +" registered");
}
public void handleDelivery(String s, Envelope envelope, AMQP.BasicProperties basicProperties, byte[] bytes) throws IOException {
Map map = (HashMap) SerializationUtils.deserialize(bytes);
LOG.info("Message Number "+ map.get("message number") + " received.");
}
public void run() {
try{
channel.basicConsume(endPointName, true,this);
}catch(IOException e){
e.printStackTrace();
}
}
}
测试
运行一个消费者线程,然后开始产生大量的消息,这些消息会被消费者取走
package com.zhenqi;
import java.util.HashMap;
/**
* Created by wuming on 2017/7/16.
*/
public class TestRabbitmq {
public static void main(String[] args){
try{
QueueConsumer consumer = new QueueConsumer("queue");
Thread consumerThread = new Thread(consumer);
consumerThread.start();
Producer producer = new Producer("queue");
for (int i = 0; i < 100000; i++){
HashMap message = new HashMap();
message.put("message number", i);
producer.sendMessage(message);
System.out.println("Message Number "+ i +" sent.");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java远程调用Rabbitmq
# java远程调用
# Java RabbitMQ的工作队列与消息应答详解
# Java RabbitMQ的持久化和发布确认详解
# Java面试高频问题之RabbitMQ系列全面解析
# Java搭建RabbitMq消息中间件过程详解
# JAVA获取rabbitmq消息总数过程详解
# Java编程rabbitMQ实现消息的收发
# java中RabbitMQ高级应用
# 创建一个
# 的是
# 给大家
# 最主要
# 回调
# 大家多多
# 就可以
# 取走
# 则需
# 远程访问
# 新消息
# exclusions
# client
# api
# slf4j
# exclusion
# amqp
# junit
# dependency
# UTF
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
如何用AWS免费套餐快速搭建高效网站?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Linux系统命令中tree命令详解
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
北京网站制作公司哪家好一点,北京租房网站有哪些?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
深圳网站制作的公司有哪些,dido官方网站?
网站优化排名时,需要考虑哪些问题呢?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
如何在IIS服务器上快速部署高效网站?
如何在阿里云部署织梦网站?
Laravel中的Facade(门面)到底是什么原理
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel怎么实现模型属性的自动加密
JS经典正则表达式笔试题汇总
js实现获取鼠标当前的位置
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Java解压缩zip - 解压缩多个文件或文件夹实例
如何在云虚拟主机上快速搭建个人网站?
iOS验证手机号的正则表达式
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
nginx修改上传文件大小限制的方法
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
,网页ppt怎么弄成自己的ppt?
如何在Tomcat中配置并部署网站项目?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel storage目录权限问题_Laravel文件写入权限设置
微信小程序 配置文件详细介绍
如何在Windows虚拟主机上快速搭建网站?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何在宝塔面板中修改默认建站目录?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
中山网站推广排名,中山信息港登录入口?
微信推文制作网站有哪些,怎么做微信推文,急?
北京的网站制作公司有哪些,哪个视频网站最好?
如何正确选择百度移动适配建站域名?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
如何在宝塔面板中创建新站点?
网页设计与网站制作内容,怎样注册网站?

