队列到底是消费者创建还是生产者创建?
答案是:消费者创建 (谁使用谁管理,谁污染谁治理)
交换机和队列,实际上是作为资源,由运维管理员创建的。
为什么仍然需要在代码中定义?重复创建不报错吗?(重复定义不会报错)
将需要发送的消息保存在数据库中,可以实现消息的可追溯和重复控制,需要配合定时任务来实现。
副作用:降低效率,浪费存储空间。
RabbitMQ 可以通过 Firehose 功能来记录消息流入流出的情况,用于调试,排错。它是通过创建一个 TOPIC 类型的交换机(amq.rabbitmq.trace),把生产者发送给Broker 的消息或者 Broker 发送给消费者的消息发到这个默认的交换机上面来实现的。另外 RabbitMQ 也提供了一个 Firehose 的 GUI 版本,就是 Tracing 插件。启用 Tracing 插件后管理界面右侧选项卡会多一个 Tracing,可以添加相应的策略。RabbitMQ 还提供了其他的插件来增强功能。
在发送大批量消息的情况下,创建和释放连接依然有不小的开销。我们可以跟接收方约定批量消息的格式,比如支持 JSON 数组的格式,通过合并消息内容,可以减少生产者/消费者与 Broker 的连接。比如:活动过后,要全范围下线产品,通过 Excel 导入模板,通常有几万到几十万条解绑数据,合并发送的效率更高。
建议单条消息不要超过 4M(4096KB),一次发送的消息数需要合理地控制。
本文链接:https://blog.nnwk.net/article/122
有问题请留言。版权所有,转载请在显眼位置处保留文章出处,并留下原文连接
Leave your question and I'll get back to you as soon as I see it. All rights reserved. Please keep the source and links
友情链接:
子卿全栈
全部评论