社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MQ

AMQP(rabbitmq)标识错误消息的来源

Bruce Adams • 5 年前 • 499 次点击  

在rabbitmq中,识别(坏的)amqp消息来源的最佳方法是什么?

该场景是多个客户机向服务器发送消息,如果成功,将导致消息发送到扇出交换(供发布/订阅使用)。 客户端也是此队列的订阅服务器,并且没有自己的答复队列。

如果服务器认为一条消息无效,它会自动退出并丢弃它。

我们还需要两件事:

  • 发布一条消息,客户机或监控系统可能会用它来表示“停止向我发送垃圾”。
  • 记录关于错误消息的诊断

什么是合适的策略?

哪些标题字段适用于标识邮件的原始发件人?

他们还有其他的考虑吗?

这个 阿皮德 头字段可以标识发送应用程序,但它本身还不够,因为一台或多台计算机上可能有多个实例。

坏客户可能会使用 信息标识 识别它发送的消息(客户机可以分配或访问)。

例如,一个监控系统(例如prometheus+kubernetes)需要更多的东西来尝试杀死坏的客户机进程。

我假设一个适当的方法是要求客户机设置某些头字段。

其次,我们能为那些不符合我们要求的客户做些什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30895
 
499 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Bruce Adams
Reply   •   1 楼
Bruce Adams    5 年前

我在AMQP方面的经验有限,如果可以的话,请改进一下。

足够使用 host+pid 确定一个过程

AppID是自由形式的,因此一种方法可能不仅仅包括应用程序ID。例如

appid: applicationid.serverip.pid

这看起来像是在扩展“app id”的语义,但是 app_id is entirely application defined . 应用程序可以通过简单的字符串比较,用“app id”标识自己。

arbitrary key values are permitted 在基本属性的基础上,这样您可以/也可以添加如下属性:

origin-host: serverip
origin-pid: pid

这可能需要在使用“builtin”字段(如app_id)时进行少量的额外编程工作。与此相关的“over-the-wire”成本也很小(自定义属性 are serialized as positional arguments in message header instead of associative array to save bandwidth ) 这可能与解码 阿皮德 字段。

您还可以设置死信交换来保存消息本身,但消息需要操作员干预才能使用。所以我认为这只对诊断有帮助。