Java连接RabbitMq

Java连接RabbitMq

1. 加依赖

image.png

2. 创建生产者producer 发消息

/**
 * 创建生产者
 */
public class Producer {

    public static void main(String[] args) throws Exception{
        // 创建RabbitMq  连接的工厂类
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 指定ip地址
        connectionFactory.setHost("192.168.216.14");
        // 指定端口号
        connectionFactory.setPort(5672);
        // 指定连接的用户名
        connectionFactory.setUsername("root");
        // 指定连接的用户的密码
        connectionFactory.setPassword("root");
        // 指定要连接那个虚拟主机
        connectionFactory.setVirtualHost("/test");
        // 创建连接对象
        Connection connection = connectionFactory.newConnection();
        // 创建连接通道
        Channel channel = connection.createChannel();
        // 发消息  简单模式
//        channel.basicPublish("","phone",null,"HelloWord".getBytes());
        // 发布消息  fanout模式 发布订阅模式
//        channel.basicPublish("fanout","",null,"这是一个邮件信息".getBytes());
        // 发消息   routing模式  路由模式
//        channel.basicPublish("routing","warning",null,"这是一个警告信息".getBytes());
        // 发消息   topic模式  主题模式
//        channel.basicPublish("topic","com",null,"主题模式的消息".getBytes());
        // 发消息   headers模式 请求头模式
        Hashtable<String, Object> hashtable = new Hashtable<String, Object>();
        hashtable.put("name","zhangsan");
        Builder properties = new Builder();
        properties.headers(hashtable);
        channel.basicPublish("headers","",properties.build(),"这是请求头模式的信息".getBytes());
        // 关闭通道
        channel.close();
        // 连接关闭
        connection.close();
    }
}

3. 创建消费者Consumer 读取消息

/**
 * 创建消费者
 */
public class Consumer1 {

    public static void main(String[] args) throws Exception{
        // 创建RabbitMq  连接的工厂类
        ConnectionFactory connectionFactory = new ConnectionFactory();
        // 指定ip地址
        connectionFactory.setHost("192.168.216.14");
        // 指定端口号
        connectionFactory.setPort(5672);
        // 指定连接的用户名
        connectionFactory.setUsername("root");
        // 指定连接的用户的密码
        connectionFactory.setPassword("root");
        // 指定要连接那个虚拟主机
        connectionFactory.setVirtualHost("/test");
        // 创建连接对象
        Connection connection = connectionFactory.newConnection();
        // 创建连接通道
        Channel channel = connection.createChannel();
        // 从通道中读消息
        // 创建Consume对象
        Consumer consumer = new DefaultConsumer(channel){
            @Override
            // 读取队列中的消息
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String msg = new String(body);
                System.out.println("consumer1接收到的消息:"+msg);
            }
        };
        // 第二个参数是自动确认消息
        channel.basicConsume("phone",true,consumer);
        // 关闭通道
        channel.close();
        // 连接关闭
        connection.close();

    }
}

rabbitMq的消息确认机制

在接收消息进行业务处理时,程序有可能出异常,如果出现异常,消息已经被从消息队列中删除了,但业务处理又没有成功,所以类似与这个消息丢失了。

}


## rabbitMq的消息确认机制

在接收消息进行业务处理时,程序有可能出异常,如果出现异常,消息已经被从消息队列中删除了,但业务处理又没有成功,所以类似与这个消息丢失了。

![image.png](https://img-blog.csdnimg.cn/img_convert/012caf005d4920e67316fc3832e910ff.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值