RabbitMQ 普通模式

news/2024/10/20 20:42:12/

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();// 工厂ipfactory.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);}
}

http://www.ppmy.cn/news/1540609.html

相关文章

AI对于智能网联汽车发展路径的演化的助力

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Realistic Car Controller Pro 车辆汽车控制

真实汽车控制器专业版(Realistic Car Controller Pro)将赋予独立定制引擎、离合器、变速箱、差速器、车轴、车轮以及所有其他系统的能力。主要控制器组件通过单个脚本来管理所有主要组件。提供了使用模块化组件独立定制每个系统的能力。 [主要功能] 与Unity 2021.3.2f1及更高…

中小型医院网站:Spring Boot解决方案

1 绪论 1.1研究背景 随着计算机技术的成熟、普及,现代信息技术革命的迅猛发展,正冲击并进而改变着经济和社会结构。信息化的程度已经成为一个国家,一个企业,一个组织仍至一个人发展的基础和竞争成败的关键。 在实际的生活中,用户都…

NVIDIA cuDNN

英伟达™ 文章目录 前言一、Key Features 主要特点1. 加速学习2. 富有表现力的操作图 API3. 支持二、深度神经网络三、特征四、cuDNN 图形 API 和融合五、Key Features 主要特点六、 cuDNN 加速框架相关库和软件前言 NVIDIA CUDA 深度神经网络库 (cuDNN) 是一个用于深度神经…

论文翻译 | OpenICL: An Open-Source Framework for In-context Learning

摘要 近年来,上下文学习(In-context Learning,ICL)越来越受到关注,并已成为大型语言模型(Large Language Model,LLM)评估的新范式。与传统微调方法不同,ICL无需更新任何参…

《计算机视觉》—— 基于PyCharm中的dlib库实现人脸关键点定位

文章目录 1. 安装必要的库2. 下载dlib的人脸检测器和关键点预测器模型3. 编写代码 人脸关键点定位是指通过计算机视觉技术,识别和定位人脸图像中的关键点,如眼睛、鼻子、嘴巴等特定位置。这些关键点的准确定位对于人脸识别、表情分析、姿态估计等应用具有…

基于SSM汽车零部件加工系统的设计

管理员账户功能包括:系统首页,个人中心,员工管理,经理管理,零件材料管理,产品类型管理,产品信息管理,产品出库管理,产品入库管理 员工账号功能包括:系统首页…

C++中的vector介绍(常用函数)

目录 vector的介绍及使用1.vector的介绍2.vector的使用2.1vector的定义2.2 vector iterator 的使用2.3vector 空间增长问题2.4 vector 增删查改2.5 vector 迭代器失效问题。(重点) 3.动态二维数组理解4.模拟实现reserve vector的介绍及使用 1.vector的介…