标签: message-queue

如何判断一个线程是否有消息队列?

有没有办法从threadId中找出,如果一个线程有消息队列?

基本上有一些windows api只有在线程有消息queue.window时才有效

c++ windows winapi message message-queue

2
推荐指数
1
解决办法
3291
查看次数

使用消息队列的应用程序的好例子

我想了解有关编程消息传递应用程序和使用消息队列的更多信息.像qpid,亚马逊队列等等.你能指点一些应用程序(如果可能的话,最好是C++,开源),这样我就可以了解更多.

另外,您能否告诉我一般指导方针,用于决定是否不使用消息队列.我很有兴趣只是因为"酷"因素而倾向于此,但我认为它对我来说可能是有益的.

message-queue

2
推荐指数
1
解决办法
3554
查看次数

推荐一个开源消息队列服务

谁能为我推荐一个开源消息队列?像JMS,gearmand,zeroMq,Amazon SQS.Tt最好满足以下几点(不是强迫性的):

  1. 分布式和可扩展.
  2. 支持异步消息.
  3. 最好支持pub/subscribe
  4. 高可用性,最好永不丢弃消息.
  5. 高性能
  6. 最好支持php sdk,以及c/c ++开发的mq服务器.
  7. 使用方便
  8. 该项目是活跃的.

非常感谢!

jms message-queue gearman zeromq mq

2
推荐指数
1
解决办法
2422
查看次数

替代TControl.Perform

TControl.Perform代码是:

var
  Message: TMessage;
begin
  Message.Msg := Msg;
  Message.WParam := WParam;
  Message.LParam := LParam;
  Message.Result := 0;
  if Self <> nil then WindowProc(Message);
  Result := Message.Result;
Run Code Online (Sandbox Code Playgroud)

程序执行等待返回,我是对的吗?

有一种替代方法,用于在同一个应用程序中的另一个线程内的TFORM队列中发布消息,而无需等待返回?

编辑

这种方法可以缓解这个问题吗?

interface

const  
  WM_DOSTUFF = WM_APP + $001;

TMyForm = class(TForm)
{stuff}
public
{Other stuff}
  procedure DoMyStuff(var Msg: TMessage); message WM_DOSTUFF;   
{More stuff}
end;  

var
  MyHandle: HWND;

implementation

constructor TMyForm.Create(AOwner: TComponent);
begin
  inherited;
  MyHandle := AllocateHWnd(DoMyStuff);
end; 

destructor TMyForm.Destroy;
begin
  DeallocateHWnd(MyHandle);
  inherited;
end;
Run Code Online (Sandbox Code Playgroud)

并且通常在线程内使用:

  PostMessage(MyHandle, WM_DOSTUFF, 0, 0);   
Run Code Online (Sandbox Code Playgroud)

windows delphi vcl message-queue

2
推荐指数
1
解决办法
695
查看次数

有没有办法将原始byte []反序列化为thrift对象而不知道它的thrift类型?

我正在运行一个需要的项目

  • 不同编程语言之间的相互通信(主要是java,c ++).
  • 可以序列化/反序列化为二进制格式和json格式.
  • IDL为不同语言生成类代码

虽然我们不需要其RPC功能,但Thrift完全符合这些标准.我们将通过MQ发送/接收序列化的thrift数据.序列化对象非常简单.但是,当涉及反序列化时,我们不能做这样的事情:

byte[] data = recv();
Object object = TDeserializer.deserialize(data);
if (object instanceof TypeA) {
    TypeA a = (TypeA) object;
} else if (object instanceof TypeB) {
    TypeB b = (TypeB) object;
}
Run Code Online (Sandbox Code Playgroud)

似乎我们必须告诉thrift它需要反序列化到哪个结构:

byte[] data = recv();
TypeA a;
TDeserializer.deserialize(a, data);
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有办法在不知道其确切类型的情况下将原始数据反序列化为thrift对象.

谢谢!!

cross-platform thrift cross-language message-queue protocol-buffers

2
推荐指数
1
解决办法
3255
查看次数

在NServiceBus中对已发布的事件进行分组

我正在使用NServiceBus向后端系统发送订单(每个命令一个订单).每个订单都有一个客户(父母).成功保存订单后,后端系统会发布"订单已接受"事件.该事件有多个订户,其中一个是文件生成器组件,它生成要由第三方使用的XML文件.此文件是按客户生成的.由于每次发布"订单接受"事件时发布的事件都处于订单级别,因此文件组件会为客户创建整个文件.

NServiceBus中是否有一种方法可以在订阅者处对事件进行分组,这样,如果同一个客户有多个订单,我们可以减少文件生成器运行的次数?

我们的一个想法是让用户在一段固定时间内休眠,当它被唤醒时,它可以将消息分组到客户的队列中,并为每个客户生成一次文件.这听起来像个好主意吗?

提前致谢.

.net nservicebus message-queue

2
推荐指数
1
解决办法
134
查看次数

是否可以在ActiveMQ中镜像单个队列?

我在生产系统中运行ActiveMQ.我们的一些队列的音量非常高,而且有些音量非常低.我有兴趣镜像其中一个低容量队列,这样我就可以围绕收到的消息构建非正式的监控服务.

不幸的是,我能找到的唯一文档似乎暗示镜像队列是全有或全无:你要么为你拥有的每一个队列创建一个主题(并且要复制流经你的每一条消息的性能损失)系统),或者根本不能使用该功能.

是否无法为单个已知队列名称启用此有用功能?

activemq-classic message-queue

2
推荐指数
1
解决办法
1485
查看次数

如何将消息添加到azure webjobs队列

我有一个排队的webjob使用queuetrigger执行任务:

    public static void ProcessQueueMessage([QueueTrigger("queue")],Data data, TextWriter log)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

在同一个解决方案中有一个网站,我需要做的是简单地从一个网站控制器向队列中添加消息.我已经尝试直接引用该函数,但似乎这只是运行函数而不是排队消息,这是不可取的,因为它以一种扩展性很差的方式创建了一大堆线程.

message-queue azure azure-webjobssdk

2
推荐指数
1
解决办法
1494
查看次数

如何并行读取队列中的消息?

情况

我们有一个消息队列.我们希望并行处理消息并限制同时处理的消息的数量.

我们下面的试用代码会并行处理消息,但只有在完成上一个流程时才会启动新批处理.我们想在完成后重启任务.

换句话说:只要消息队列不为空,任务的最大数量应始终处于活动状态.

试用代码

static string queue = @".\Private$\concurrenttest";

private static void Process(CancellationToken token)
{
    Task.Factory.StartNew(async () =>
    {
        while (true)
        {
            IEnumerable<Task> consumerTasks = ConsumerTasks();
            await Task.WhenAll(consumerTasks);

            await PeekAsync(new MessageQueue(queue));
        }
    });
}

private static IEnumerable<Task> ConsumerTasks()
{
    for (int i = 0; i < 15; i++)
    {
        Command1 message;
        try
        {
            MessageQueue msMq = new MessageQueue(queue);
            msMq.Formatter = new XmlMessageFormatter(new Type[] { typeof(Command1) });
            Message msg = msMq.Receive();
            message = (Command1)msg.Body;
        }
        catch (MessageQueueException mqex)
        {
            if …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing message-queue task-parallel-library

2
推荐指数
1
解决办法
3631
查看次数

提取jms文本内容

我只想从jms消息中提取没有标题和属性的jms消息文本。要提取的JMS头:msg.getJMSCorrelationID(); 提取JMS属性:jmsMessage.getPropertyNames() 但是如何仅从消息中获取文本值?在下面的示例消息中,我只想提取“ hello queue ”。是否有Java函数可以执行此操作? jms消息样本

java jms message-queue

2
推荐指数
1
解决办法
4614
查看次数