首页 > 其他分享 >RabbitMQ 普通模式

RabbitMQ 普通模式

时间:2024-10-18 22:52:31浏览次数:3  
标签:rabbitmq String 队列 factory 模式 普通 消息 import RabbitMQ

RabbitMQ 普通模式

一、普通模式示意图

RabbitMQ普通模式示意图

二、普通模式介绍

RabbitMQ 普通模式也称为点对点模式,它是消息队列的一种基本实现方式。在这种模式下,生产者将消息发送到队列中,消费者从队列中接收并处理消息。每条消息只会被一个消费者接收,其他消费者无法重复消费。

特点:

  1. 单一消费者模式:生产者发送的每条消息只能被一个消费者处理,适用于需要确保每条消息只被处理一次的场景。
  2. 消息持久化:通过将队列设置为持久化,可以在RabbitMQ服务重启后保留消息,防止数据丢失。
  3. 自动应答机制:消费者可以选择是否自动应答,以便在处理消息失败时重新接收未确认的消息。
  4. 消息确认机制:RabbitMQ 支持手动和自动消息确认,确保消息可靠传递。

使用场景:

  • 简单任务队列
  • 需要确保任务不被重复处理的场景
  • 点对点通讯的应用

三、普通模式代码

1. 生产者端代码

package com.lucifer.rabbitmq.one;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

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

public class producer {

    // 队列名
    public static final String QUEUE_NAME = "hello";

    // 发消息
    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 工厂ip
        factory.setHost("1.94.97.29");
        // 设置用户名和密码
        factory.setUsername("guest");
        factory.setPassword("123456");

        // 创建连接
        Connection connection = factory.newConnection();

        // 获取信道
        Channel channel = connection.createChannel();

        // 生成一个队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        // 消息内容
        String message = "hello world";

        // 发送消息到队列
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
    }
}

2. 消费者端代码

package com.lucifer.rabbitmq.one;

import com.rabbitmq.client.*;

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

public class consumer {

    // 队列名
    public static final String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("1.94.97.29");
        factory.setUsername("guest");
        factory.setPassword("123456");

        // 创建连接
        Connection connection = factory.newConnection();

        // 获取信道
        Channel channel = connection.createChannel();

        // 声明消息接收回调函数
        DeliverCallback deliverCallback = (consumerTag, message) -> {
            System.out.println(new String(message.getBody()));
        };

        // 声明取消消息的回调函数
        CancelCallback cancelCallback = consumerTag -> {
            System.out.println("消费消息被中断");
        };

        // 消费消息
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);
    }
}

标签:rabbitmq,String,队列,factory,模式,普通,消息,import,RabbitMQ
From: https://blog.csdn.net/dhrmt/article/details/143060337

相关文章

  • RabbitMQ系列学习笔记(八)--发布订阅模式
    文章目录一、发布订阅模式原理二、发布订阅模式实战1、消费者代码2、生产者代码3、查看运行结果本文参考:尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmqRabbitMQ详解Centos7环境安装Erlang、RabbitMQ详细过程(配图)一、发布订阅模式原理在开发过程中,有一......
  • RabbitMQ系列学习笔记(十)--通配符模式
    文章目录一、通配符模式原理二、通配符模式实战1、消费者代码2、生产者代码3、查看运行结果本文参考:尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmqRabbitMQ详解Centos7环境安装Erlang、RabbitMQ详细过程(配图)一、通配符模式原理通配符模式(Topics)是在路......
  • 策略模式是一种行为设计模式
    策略模式是一种行为设计模式,允许你定义一系列算法、封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。以下是一个用策略模式实现不同类型促销活动的Java示例。步骤定义促销策略接口:创建一个接口,定义促销活动的方法。实现具体策略:......
  • 前端开发设计模式——状态模式
    目录一、状态模式的定义和特点二、状态模式的结构与原理1.结构:2.原理:三、状态模式的实现方式四、状态模式的使用场景1.按钮的不同状态:2.页面加载状态:3.用户登录状态:五、状态模式的优点1.提高代码的可维护性:2.增强代码的可读性:3.更好的处理动态变化:六、状态模式的......
  • ArkWeb高级安全模式 - 提升应用安全性
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。简介ArkWeb框架的高级安全模式为开发......
  • 轻松上手-MVVM模式_关系型数据库_云函数T云数据库
    作者:狼哥团队:坚果派团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地,目前已开发鸿蒙原......
  • UIAbility组件启动模式
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • 优秀图书推荐《单元测试:原则、模式和实践》与要点解析
    一.单元测试历史背景     单元测试在软件开发中已经存在了几十年,但直到21世纪初,它才成为软件开发过程中的一个标准实践。随着敏捷开发方法的兴起,单元测试变得更加重要,因为它支持快速迭代和持续集成。VladimirKhorikov的书《单元测试:原则、模式和实践UnitTesting:Principl......
  • 单例模式
    单例模式单例模式:每次实例化对象都是用的同一个内存地址【第一个对象】。基于模块导入实现基于面向对象实现手撕一个单例模式示例:importthreadingclassSingleton:instance=Nonelock=threading.RLock()def__init__(self,name):self.n......
  • 【设计模式】适配器模式
    设计模式【设计模式】工厂方法模式【设计模式】抽象工厂模式【设计模式】单例模式【设计模式】策略模式【设计模式】观察者模式【设计模式】装饰模式【设计模式】适配器模式 一、介绍适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作。适配器可......