该RabbitMQ的Java客户端具有以下概念:
Connection - 与RabbitMQ服务器实例的连接Channel - ???我想了解的关系,更重要的是,该协会之间.
Channel是什么,除了这是你发布和使用的结构,以及它是从一个开放的连接创建的.如果有人可以向我解释"频道"代表什么,那么可能有助于澄清一些事情.在此先感谢您的帮助!
作为一名经验丰富的Spring用户,我假设Spring Integration在最近需要一些(JMS)消息传递功能的项目中更有意义(更多细节).使用Spring Integration几天之后,考虑到必须配置的通道数量,以便在适当的位置进行一些请求 - 响应(侦听不同的JMS队列)通信,它仍然会感觉很多配置开销.
因此,我正在寻找一些背景信息Camel与Spring Integration的不同之处,但似乎有很多信息,我发现:
问题是:你使用一个堆栈而不是另一个堆栈有什么经验?在哪些情况下你会推荐Camel是Spring Integration缺乏支持吗?你在哪里看到每个人的利弊?任何来自现实世界项目的建议都受到高度赞赏.
我一般只是开始使用RabbitMQ和AMQP.
大多数RabbitMQ文档似乎都专注于循环,即单个消费者使用单个消息,负载在每个消费者之间传播.这确实是我见证的行为.
例如:生产者有一个队列,每2秒发送一次消息:
var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
var count = 1;
connection.on('ready', function () {
var sendMessage = function(connection, queue_name, payload) {
var encoded_payload = JSON.stringify(payload);
connection.publish(queue_name, encoded_payload);
}
setInterval( function() {
var test_message = 'TEST '+count
sendMessage(connection, "my_queue_name", test_message)
count += 1;
}, 2000)
})
Run Code Online (Sandbox Code Playgroud)
这是一个消费者:
var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
connection.on('ready', function () {
connection.queue("my_queue_name", function(queue){
queue.bind('#'); …Run Code Online (Sandbox Code Playgroud) 我在Message Brokers和ESB上经历了不同的问题/文章(甚至在stackoverflow上).仍然不是一个线索,因为消息代理和ESB之间的CLEAR划分区别是什么?现在我在这里尝试比较产品,Websphere Broker和Mule ESB !!
首先,(任何版本)Webshere Broker是ESB吗?我们的IBM产品人员声称它是ESB!(我并不感到惊讶).
我的有限信息告诉我Message Broker在HUB-SPOKE模型上工作.然而,ESB适用于总线架构.那究竟是什么意思呢?我读过如果HUB失败(我猜不到)那么经纪人就完全失败了.这不是ESB的情况(所以那些人说).我在这里不明白的是"如果BUS怎么办"失败?
现在关于ESB和Brokers的常见内容是,它们提供路由,转换,编排等.所以如果它们都提供了这个,那么为什么我会选择一个而不是另一个.
另一个冲突领域是转型.与Message Brokers相比,ESB是否以不同的方式为其提供便利?我真的很喜欢这方面的一些见解.
现在谈论HORIZONTAL缩放.谁比谁更优秀?或者它们在复杂性(或任何其他因素)方面都具有相同的可扩展性.当然,Webshpere Broker会为每个盒子收费(更不用说每个cpu)了.我相信,即使是商业上的MULE ESB也不会这样做.暂且不说它的Cost部分,ESB扩展和Message Broker扩展的含义是什么.我碰巧知道您可以扩展到ESB中的服务级别.这是否可以在Message Broker中使用?
我们需要具有发布/订阅功能的分布式架构消息系统/服务总线.有没有人对我们可以用于.net应用程序的框架有什么建议?
而不是写自己的图书馆.
我们正在开发一个项目,这个项目将是一个自我划分的服务器池,如果一个部分变得太重,管理员会将其划分并将其作为一个单独的进程放在另一台机器上.它还会警告所有连接的客户端,这会影响连接到新服务器.
我很好奇使用ZeroMQ进行服务器间和进程间通信.我的伴侣宁愿自己动手.我期待社区回答这个问题.
我自己是一个相当新手的程序员,只是学习了消息队列.正如我用Google搜索和阅读,似乎每个人都在使用消息队列来处理各种各样的事情,但为什么呢?是什么让他们比编写自己的图书馆更好?为什么它们如此常见,为什么会有这么多?
我只是想知道是否有办法调用一个方法,我用一个字符串动态建立方法的名称.
例如,我有一个名为loaddata的方法
-(void)loadData;
Run Code Online (Sandbox Code Playgroud)
打电话给我,我通常称之为
[self loadData];
Run Code Online (Sandbox Code Playgroud)
但我希望能够用字符串动态调用它,例如
NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
Run Code Online (Sandbox Code Playgroud)
这是一个愚蠢的例子,但我希望你明白我的观点.我正在使用它来为我为我的IPad应用程序设置的数据绑定类.很难解释,但要解决它我需要弄清楚如何用字符串调用方法.
有任何想法吗?
谢谢
我正在寻找JMS是一个很好的解决方案的问题的简单例子,也是JMS在这些情况下是一个很好的解决方案的原因.在过去,我只是简单地使用数据库作为将消息从A传递到B的方法,当消息不一定立即被B处理时.
这种系统的一个假设示例是,所有新注册的用户应在注册后24小时内收到欢迎电子邮件.为了便于论证,假设DB不记录每个用户注册的时间,而是将每个新用户的引用(外键)存储在pending_email表中.电子邮件发件人作业每24小时运行一次,向该表中的所有用户发送电子邮件,然后删除所有pending_email记录.
这似乎是应该使用JMS的那种问题,但我不清楚JMS对我所描述的方法有什么好处.DB方法的一个优点是消息是持久的.我知道JMS消息队列也可以保留,但在这种情况下,JMS和我描述的"数据库作为消息队列"方法似乎没什么区别?
我错过了什么? - 唐
所有的例子的卡夫卡 | 生产者显示ProducerRecord的键/值对不仅是相同的类型(所有示例都显示<String,String>),而是相同的值.例如:
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
Run Code Online (Sandbox Code Playgroud)
但是在Kafka文档中,我似乎无法找到解释键/值概念(及其基本目的/效用)的位置.在传统的消息传递(ActiveMQ,RabbitMQ等)中,我总是在特定的主题/队列/交换中发出消息.但Kafka是第一个似乎需要键/值对的代理,而不仅仅是一个正常的'字符串消息.
所以我问:要求生产者发送KV对的目的/用途是什么?
messaging message-queue key-value messagebroker apache-kafka
我刚刚阅读了RabbitMQ的Java API文档,发现它非常丰富且直截了当.如何设置简单Channel的发布/消费的示例非常容易理解.但这是一个非常简单/基本的例子,它给我留下了一个重要的问题:如何设置1+ Channels来发布/消费多个队列?
比方说,我有上有3个队列中的RabbitMQ服务器:logging,security_events和customer_orders.因此,我们要么需要一个Channel能够发布/消费所有3个队列,或者更有可能需要3个独立的Channels队列,每个队列都专用于一个队列.
除此之外,RabbitMQ的最佳实践要求我们Channel为每个消费者线程设置1 个.对于这个例子,让我们说security_events是罚款,只有1消费者线程,但logging并customer_order都需要5个线程来处理卷.所以,如果我理解正确,这是否意味着我们需要:
Channel用于发布/消费的1 和1个消费者线程security_events; 和Channels用于发布/消费的5 和5个消费者线程logging; 和Channels用于发布/消费的5 和5个消费者线程customer_orders?如果我的理解在这里被误导,请先纠正我.无论哪种方式,一些厌倦战斗的RabbitMQ老手能帮助我"连接点"和一个体面的代码示例来设置符合我要求的发布者/消费者吗?提前致谢!
messaging ×10
java ×4
rabbitmq ×4
amqp ×3
channel ×2
jms ×2
.net ×1
apache-camel ×1
apache-kafka ×1
c# ×1
distributed ×1
dynamic ×1
esb ×1
iphone ×1
key-value ×1
methods ×1
node-amqp ×1
node.js ×1
objective-c ×1
servicebus ×1
zeromq ×1