Java编写简易rabbitmq生产者与消费者

一、前言

开发时经常与其它系统用rabbitmq对接,当需要自测时,还是自己写rabbitmq生产者、消费者自测方便些。

下面总结下不用框架、使用java编写简易rabbitmq的方法。

二、代码

1.导入jar包

(1)如果是maven,那就用

a 复制代码
<dependency>
		    <groupId>com.rabbitmq</groupId>
		    <artifactId>amqp-client</artifactId>
		    <version>3.3.4</version>
		</dependency>

(2)如果没用maven,那就找一个amqp-client-3.3.4.jar文件,然后引入项目

2.生产者代码

a 复制代码
package RABBIT_MQ;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;


public class RabbitMQSender {

    //交换机
    private final static String exchange_name = "x.mySys.test";
    //路由键
    private final static String route_key = "topmess";

    public static void main(String[] args) throws IOException, TimeoutException {
        //定义一个链接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置服务地址
        connectionFactory .setHost("10.123.123.123");
        //设定端口
        connectionFactory .setPort(5673);
        //设定用户名
        connectionFactory .setUsername("myuser");
        //设定密码
        connectionFactory .setPassword("mypass");
        //设定虚拟机
        connectionFactory .setVirtualHost("my_host");

        //从mq工具类获取连接信息
        Connection connection = connectionFactory.newConnection();
        //获取一个通道
        Channel channel = connection.createChannel();
        String message = "Hello World!";
        channel.basicPublish(exchange_name, route_key, null, message.getBytes());
        System.out.println("运行完毕,已发送消息【" + message + "】");

        channel.close();
        connection.close();
    }

}

说明:

(1)其中的配置,按照自己的rabbitmq配置更改

(2)生产者配置了交换机名与路由键

3.消费者代码

a 复制代码
package RABBIT_MQ;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;


public class RabbitMQReceiver {

    private static String queue_name="q.mySys.test";

    public static void main(String[] args) throws IOException, TimeoutException {
        //定义一个链接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置服务地址
        connectionFactory .setHost("10.123.123.123");
        //设定端口
        connectionFactory .setPort(5673);
        //设定用户名
        connectionFactory .setUsername("myuser");
        //设定密码
        connectionFactory .setPassword("mypass");
        //设定虚拟机
        connectionFactory .setVirtualHost("my_host");

        //从mq工具类获取连接信息
        Connection connection = connectionFactory.newConnection();
        //获取一个通道
        Channel channel = connection.createChannel();
        //监听该队列,false代表手动确认
        channel.basicConsume(queue_name,false,new DefaultConsumer(channel){
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties basicProperties, byte[] body) throws IOException{
                System.out.println("接收到的消息:"+ new String(body,"UTF-8"));
            }
        });
        System.out.println("运行完毕,等待mq接收消息");
    }

}

说明:

(1)其中的配置,按照自己的rabbitmq配置更改

(2)消费者配置了监听队列

(3)消费者启动后一直开启,除非手动关闭项目运行

相关推荐
Coder_Boy_2 分钟前
Spring Boot 事务回滚异常 UnexpectedRollbackException 详解(常见问题集合)
java·spring boot·后端
青云交4 分钟前
Java 大视界 -- 基于 Java+Redis Cluster 构建分布式缓存系统:实战与一致性保障(444)
java·redis·缓存·缓存穿透·分布式缓存·一致性保障·java+redis clus
不知疲倦的仄仄5 分钟前
第五天:深度解密 Netty ByteBuf:高性能 IO 的基石
java·开源·github
xiaobaishuoAI8 分钟前
后端工程化实战指南:从规范到自动化,打造高效协作体系
java·大数据·运维·人工智能·maven·devops·geo
期待のcode11 分钟前
TransactionManager
java·开发语言·spring boot
Hello.Reader12 分钟前
PyFlink JAR、Python 包、requirements、虚拟环境、模型文件,远程集群怎么一次搞定?
java·python·jar
计算机学姐13 分钟前
基于SpringBoot的汽车租赁系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·汽车·推荐算法
七夜zippoe14 分钟前
分布式事务解决方案 2PC 3PC与JTA深度解析
java·分布式事务·cap·2pc·3pc·jta
我是人✓15 分钟前
Spring IOC入门
java·数据库·spring
好好研究16 分钟前
SpringBoot小案例打包执行流程
java·spring boot·后端