当前位置: 首页 > 网络应用技术

Java --- RabbitMQ高级应用程序

时间:2023-03-07 00:11:10 网络应用技术

   使用时,如果生产者想知道消息是否成功地传递到相应的开关和队列,则有两种方法可以控制消息传递的可靠性模式。

   从上面整个消息的交付过程的角度来看,生产者的消息将在输入中间部分时首先到达开关,然后从开关传递到队列,也就是说,将其分为两个步骤策略然后,新闻的损失是它将出现在这两个阶段。RabbitMQ亲密地为我们提供了这两个部分的可靠新传输模式:

   使用这两个回调模式来确保消息可靠。

  1.1。确认模式 消息将从生产者返回回调为交换机。您可以在实例中直接设置逻辑设置。如果您使用配置,则需要打开出版社中的Publisher-confirms =“ true”。该配置是直接发布者 - 构成类型的:Correaled。他默认要手动打开它。

   上面的确认是由函数执行的,该函数带有三个参数,第一个是相关信息,第二个指示了开关是否成功接收了消息,第三个参数意味着未成功接收到它。

  1.2。返回模式 从切换到消息队列,它将返回一个。在工厂配置中打开“撤退模式发布者returns” =“ true”,设置开关处理消息失败的模式(默认false false以直接丢弃消息),并添加逻辑返回处理。

   中间携带五个参数,其中指消息对象,错误代码,错误信息,开关,路由键。

  1.3。确认机制 在取消消息队列中数据的数据取消之后,将有一种确认消息的确认机制,以防止由于消息的成功而导致消息的消息丢失,但没有消耗。有三种方法可以确认:

   其中,自动确认意味着一旦消息被消费者捕获,它将自动默认并从消息队列中删除。如果目前消费的消费存在问题,它将在默认消息消耗中取得成功,但事实上,消费没有成功,也就是说,当前的新闻丢失了。默认情况是自动确认机制。

   如果设置手动确认方法,则需要在正常消费消息后调节确认,并手动签名。如果在业务处理过程中发生异常,则将再次发送呼叫。

   首先,当队列绑定时需要确认机制的配置,并将其设置为手动签名。

   生产者不需要改变一端。它只需要改变消费者对消息自动签名的实现的实现。业务的正常执行签署了消息,业务是错误的,并且消息被拒绝,该消息被重新发布或丢弃。

   涉及三个简单的签名功能,一个正确签名,另一个是单个拒绝,第三个是批处理。

   增加用户请求和数据库服务处理之间的消息中间件的隔离,以便所有紧急情况都可以抵抗消息队列并减少服务器结束的可能性。let所有请求都存储在队列中,消费者终端只需要以恒定的消费速度传达信息,以确保运营效率,并且由于背景的阻塞而不会导致客户得到正常响应(当然,这意味着它意味着它是引用的任务不需要同步)。

   您只需要在消费者绑定消息队列时指定删除消息的速率。需要手动签名方法来每次从队列中删除下一个数据。

   消息队列提供了存储在队列中的到期时间,分为两个方向,一个是针对整个队列中的所有消息,即队列的到期时间,另一个是当前新闻的到期时间。是单独设置以获取一条消息。

  队列的到期时间设置非常简单。您只需要在创建队列时指定到期时间,或者您可以直接通过控制台创建指定的到期时间。一旦队列到期,在队列中未消费的新闻将到期并到期排队。

   发送时需要单独指定单个消息的到期时间,并且在发送时配置时指定的其他信息在发送时完成。

   如果消息的到期时间结束了,但是他目前处于队列的中间,那么他将不会处理他,并且只有在处理直到那时才能进行处理,判决才会过期。

   如果消息的到期时间和队列的到期时间同时,则最终到期时间由最短的时间确定,即,如果当前新闻未到达,但是整个队列的到期时间IS,然后在队列中的新闻也自然到期,并实施了过期的处理策略。

  4.1。死亡字母的概念。死亡字母队列指的是死信开关。当一条消息变成死信时,可以将其发送到另一个开关进行处理。处理的开关称为死信开关。

   创建队列时,您可以在配置中指定相关信息,例如死信开关,队列长度等。随后的一系列工作无法操作。MQ将自己完成配置事件响应。

  4.2,延迟队列 延迟队列是指进入队列后不会立即消耗消息的消息,并且仅在达到指定时间(即需要时间判断条件)后才消耗。

   消息队列不提供延迟队列的实现,但是可以通过+来完成设置队列,而不是任何消费者消耗的队列,所有消息都将存储在其中,设置了排队以设置排队时间的到期时间,一旦队列到期,将所有新闻转换为约束的死信队列。

   然后,特定的消费者消耗了死亡字母队列的消息,以实现延迟队列的功能。

   例如,要实现订单 - 时间付款超时以取消订单: