当您将消息存储在队列中时,是不是更多的元数据信息,那么从队列中提取的人知道如何处理数据?队列中的实际信息并不总是包含所有信息.
假设你有一个类似Twitter的应用程序,每当有人发布消息时,你仍然需要将实际的消息文本存储在数据库中吗?
该队列将更多地用于向其他订户广播新消息已到达,然后这些服务可以采取进一步行动.
或者你真的可以将推文文本存储在队列中吗?(或者你可以,但那会很傻?)
队列消息是否可以具有状态字段,哪些订阅者可以在处理其工作流程的一部分时进行更改?(或者你会在数据库中这样做吗?)
只是想弄清楚何时使用队列与db.
我想在我的PHP应用程序中实现RabbitMQ,并使用php-amqp扩展.我唯一的问题是,如何轻松查询以返回PHP中队列的内容?
php-amqp似乎无法让我这样做.如果我出错了,请帮帮我:)
我目前正在使用Quartz Scheduler进行异步任务,例如发生异常时发送电子邮件,从Web界面发送电子邮件或定期分析流量.
我应该使用消息队列发送电子邮件吗?这样做是否更有效率或更正确?调度程序方法工作得很好.
如果我使用队列并且电子邮件无法发送,队列是否可以稍后重试发送电子邮件?对于需要立即执行的任务,队列方法看起来比调度程序更简单,但对于调度程序任务,调度程序仍然是,除非队列中有更多比我知道的更多.
我还没有使用过JMS,所以这就是我读过的内容.
沃尔特
如果我理解正确,我可以使用nServiceBus作为"框架"和/或RabbitMQ的包装器我对RabbitMQ的偏好能够在linux机器上使用它
背景
我有一个应用程序,使人们可以上传图像.这些图像需要缩略图.
我们的应用程序主要是asp.net(c#)
我的想法是做以下事情:
我想我可以使用亚马逊SQS,但我想探讨使用RabbitMQ进行传输的nServiceBus的可能性.
有没有人有这方面的进一步信息?我在GitHub上看到了这个:http://github.com/machine/machine.mta/tree/master/Source/NServiceBus.Unicast.Transport.RabbitMQ但是想知道如何使用它?
你最喜欢的方法是什么?
我是消息传递的新手,目前正在调查使用RabbitMQ作为我们系统架构的一部分,以提供不同服务之间的消息传递.我有一个基本的RabbitMQ示例工作,它可以通过总线传输基本文本消息.看起来EasyNetQ可能只是使用RabbitMQ的一些复杂性,尽管我在使用它时遇到了一些麻烦.
我想发送一个由以下类表示的更高级的消息,而不仅仅是一个字符串:
public class Message
{
public string Text { get; set; }
public int RandomNumber { get; set; }
public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图通过将其发布到队列来发送它,然后让订阅者从队列中取出它.我的代码如下:
出版者
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
var message = new Message() { Text = "Hello World", RandomNumber = new Random().Next(1,100), Date = DateTime.Now };
bus.Publish<Message>(message);
}
Run Code Online (Sandbox Code Playgroud)
接收器
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe<Message>("test", m => Console.WriteLine(string.Format("Text: {0}, RandomNumber: {1}, Date: {2}", m.Text, m.RandomNumber, …Run Code Online (Sandbox Code Playgroud) 有没有办法让RabbitMQ监听UDP连接并将这些数据包放入某个默认队列中,然后由标准客户端提取?ActiveMQ或ZeroMQ会更好吗?
我在Kafka 0.8.1.1中的server.properties文件中进行了更改,即在创建主题时添加log.cleaner.enable=true并启用cleanup.policy=compact了.现在,当我测试它时,我将以下消息推送到主题,其中包含以下内容(Key,Message).
现在我用与早期输入相同的键推送第4条消息,但更改了消息.这里的日志压缩应该会出现.使用Kafka工具,我可以看到主题中的所有4个偏移.我怎么知道日志压缩是否有效?是否应删除先前的消息,或者在推送新消息时日志压缩工作正常.是否有做的任何事情log.retention.hours或topic.log.retention.hours或log.retention.size配置?这些配置在日志压缩中的作用是什么.PS - 我已经彻底浏览了Apache文档,但仍然不清楚.
http://netcommon.sourceforge.net/
Common.Logging是具体的"记录器"之上的抽象(例如:log4net,Enterprise Library Logging,NLog)
Message Queue系统有什么可用的吗?(示例:msmq,rabbitmq,DotNetMQ,ZeroMQ等)
使用上面的代码,我能够使用不同的路由键来使用多个生产者发送到同一交换机的多个消息,并且能够将每个消息插入数据库。
但这会消耗过多的资源,因为消息将一个接一个地插入到数据库中。所以我决定去批量插入,发现我可以设置BasicQos
在BasicQos中将消息限制设置为10后,我的期望是Console.WriteLine必须写入10条消息,但它没有达到预期。
我的期望是从队列中消耗N个消息,然后进行大容量插入,并在成功发送ACK的情况下进行,否则将没有ACK
这是我使用的代码。
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueBind(queue: "queueName", exchange: "exchangeName", routingKey: "Producer_A");
channel.QueueBind(queue: "queueName", exchange: "exchangeName", routingKey: "Producer_B");
channel.BasicQos(0, 10, false);
var consumer = new EventingBasicConsumer(channel);
channel.BasicConsume(queue: "queueName", noAck: false, consumer: consumer);
consumer.Received += (model, ea) =>
{
try
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
// Insert into Database
channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
Console.WriteLine(" Recevier Ack " + ea.DeliveryTag);
}
catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我试图理解像卡夫卡这样的东西和像骆驼这样的东西.据我所知,Camel将为开发人员提供更多抽象,而不必担心在某种程度上更改协议/系统.Kafka如何能够处理Camel现在可以做的大部分事情?我正在阅读文档,看起来Kafka已经更新/升级到足以略微脱离成为消息代理.我想我的问题真的可以归结为卡夫卡在未来打样系统方面与Camel的比较,以及卡夫卡在哪些方面没有骆驼?我的印象是Kafka的扩展性不如系统增长.
编辑:这完全基于消息.围绕Camel的文档非常清楚它基于企业集成模式,但我深入研究Kafka文档可以实现相同的模式.我错过了什么吗?
message-queue ×10
rabbitmq ×5
c# ×3
apache-kafka ×2
java ×2
.net ×1
amazon-sqs ×1
amqp ×1
apache-camel ×1
easynetq ×1
jms ×1
nservicebus ×1
php ×1
queue ×1
retention ×1