标签: message-queue

SQS 中一条消息的最大ReceiveMessage 请求数

在 SQS 中,对于单个消息,可以在队列的最大保留期限内放置的ReceiveMessage请求的最大数量是多少?

我搜索了很多,但找不到 Max Cap 的任何数字。

是无限的吗?

message-queue amazon-sqs amazon-web-services

5
推荐指数
1
解决办法
6727
查看次数

消息循环是否在 UI 线程上执行?

我对 winforms 中的消息循环如何工作感到非常困惑。我正在处理 Windows 表单,我知道何时调用Application.Run(myform),因此它将创建一个消息队列和消息循环,然后显示我的表单并开始在消息队列中检索消息以进行调度。

我阅读了一些主题,但仍然不明白消息循环在幕后如何工作,UI 线程同时运行消息泵和执行代码?以及消息循环如何使用线程?

我的问题是:消息循环是否会在 UI 线程上运行。如果是,为什么它不阻塞 UI 线程?

如果问题不清楚,请告诉我,对不起,因为我的英语不好。

c# messages message-queue winforms

5
推荐指数
1
解决办法
1529
查看次数

为 CQRS 实施包装 Masstransit 是一个好习惯吗?

我宁愿有一个单独的CommandBusand EventBusand also ICommandHandler<TCommand>andIEventHandler<TCommand> 这样一个OrderEventHandler类看起来像:

public class OrderEventHandler :
    IEventHandler<OrderPlaced>,
    IEventHandler<OrderRegistrantAssigned>,
    IEventHandler<OrderTotalsCalculated>,
    IEventHandler<OrderConfirmed>,
    IEventHandler<OrderExpired>,
    IEventHandler<SeatAssignmentsCreated>,
    IEventHandler<SeatAssigned>,
    IEventHandler<SeatAssignmentUpdated>,
    IEventHandler<SeatUnassigned>
{ 
    public void Handle(OrderPlaced @event){...}
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

一个可能的解决方案是在Masstransit基础设施和我的之间提供一个采用者CQRS(比如ConsumerToHandlerAdopter<T>它只公开我通常需要的上下文细节)。

但是由于我是 新手Masstransit,我无法解决以后可能需要处理的问题。

所以我的问题是: 通常是否值得包装 Masstransit 以便我处理自己的基础设施?

c# masstransit message-queue cqrs microservices

5
推荐指数
1
解决办法
2508
查看次数

RabbitMQ 无法声明队列并且侦听器无法在服务器上获取队列

我有spring boot rabbitmq应用程序,我必须将 Employee 对象发送到队列中。然后我设置了一个监听器应用程序。对员工对象进行一些处理并将此对象放入回调队列中。

为此,我在我的应用程序中创建了以下对象。

  1. 创建了ConnectionFactory。
  2. 使用ConnectionFactory创建了RabbitAdmin对象。
  3. 请求队列。
  4. 回调队列。
  5. 直接交换。
  6. 请求队列绑定。
  7. 回调队列绑定。
  8. 消息转换器。
  9. RabbitTemplate 对象。
  10. 最后是SimpleMessageListenerContainer 的对象。

我的应用程序文件如下所示。

应用程序属性

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=foo
emp.rabbitmq.directexchange=EMP_EXCHANGE1
emp.rabbitmq.requestqueue=EMP_QUEUE1
emp.rabbitmq.routingkey=EMP_ROUTING_KEY1
Run Code Online (Sandbox Code Playgroud)

主类.java

package com.employee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainClass {

    public static void main(String[] args) {
        SpringApplication.run(
                MainClass.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序上下文提供程序

package com.employee.config;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;

public class ApplicationContextProvider implements …
Run Code Online (Sandbox Code Playgroud)

message-queue rabbitmq spring-rabbit spring-amqp spring-boot

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

即时通讯应用的演员模型?

我有使用诸如RabbitMQ和其他消息传递技术的企业分布式系统的背景,尽管我对Actor Model.

话虽如此,我想知道使用Actor Model诸如AKKA或AKKA.NET类似的应用程序的框架是否是个好主意Whatsapp?鉴于此类应用程序的要求(高可用性、低延迟等...)。

我的另一个问题是,Erlang 的内置 actor 模型是大公司将其用于其消息传递应用程序的原因还是我不知道的其他原因?

技术解释受到高度赞赏。提前致谢。

messaging message-queue actor-model akka akka.net

5
推荐指数
1
解决办法
658
查看次数

Redis 发布/订阅持久化

我正在研究 redis SMQ 持久性。我的问题是,当发布者发布消息时,消费者突然停止了。当消费者再次连接时,是否可以从它停止的地方订阅消息?

message-queue redis

5
推荐指数
1
解决办法
3833
查看次数

RabbitMQ - ACCESS_REFUSED - 登录被拒绝

我正在使用rabbitmq-server用 Scala 编写的消费者使用它并从中获取消息。这一直很有效,但是自从我将 RabbitMQ 服务器从一个服务器迁移到另一个服务器后,在尝试连接到它时出现以下错误:

com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
Run Code Online (Sandbox Code Playgroud)

此外,rabbitmq-server日志:

=INFO REPORT==== 18-Jul-2018::15:28:05 ===
accepting AMQP connection <0.7107.0> (127.0.0.1:42632 -> 127.0.0.1:5672)

=ERROR REPORT==== 18-Jul-2018::15:28:05 ===
Error on AMQP connection <0.7107.0> (127.0.0.1:42632 -> 127.0.0.1:5672, state: starting):
PLAIN login refused: user 'my_personal_user' - invalid credentials

=INFO REPORT==== 18-Jul-2018::15:28:05 ===
closing AMQP connection <0.7107.0> (127.0.0.1:42632 -> 127.0.0.1:5672)
Run Code Online (Sandbox Code Playgroud)

我浏览了有关身份验证问题的所有 SO 问题,并找到了以下线索:

  • 我的凭据是错误的
  • 我正在尝试guest从远程连接
  • 我的RabbitMQ版本与消费者不兼容

所有这些线索都没有帮助我。我的凭据很好,我不是guest …

authentication message-queue rabbitmq

5
推荐指数
1
解决办法
1万
查看次数

python多处理队列中的死锁

我正在使用多处理库中的队列在进程之间共享数据。

我有 2 个队列,都限制为 10 个对象,第一个队列有一个进程将对象“放入”其中,许多进程从中“获取”。

第二个队列有许多进程将对象“放入”其中,只有一个进程从中“获取”。

系统完美地工作了一段时间,然后开始表现奇怪:只有将对象“放入”第一个队列的进程继续工作,而从第一个队列读取的进程显然不再行为/工作(即使进程是活)。似乎这里有一个死锁,但我不确定,这是我的代码:

更新

import multiprocessing
import logging
from multiprocessing import Process

logger = logging.get_logger(__name__)

# Processes 2, 3 ,4:

class Processes_234(Process):
    def __init__(self, message_queue_1, message_queue_2):
        Process.__init__(self)
        self.message_queue_1 = message_queue_1
        self.message_queue_2 = message_queue_2

    def run(self):
        while True:
            try:
                # get from queue
                el1, el2, el3 = self.message_queue_1.get()
                logger.debug('Processes234: get from queue')
            except Exception as exp:
                logger.debug("message_queue_1: queue empty, Exception message: " + str(exp))

            # do some stuff with el1, el2, el3...

            try:
                # put into …
Run Code Online (Sandbox Code Playgroud)

python deadlock message-queue multiprocessing python-3.x

5
推荐指数
1
解决办法
735
查看次数

Google Pub/Sub 性能(低负载下的延迟)?

我们即将选择 Google Cloud Pub/Sub 作为我们的消息总线。一些消息需要在低延迟持续时间(例如小于 100-200 毫秒)内进行调度。

我在某处读到,在大量消息中,它表现良好,但对于每秒数百条消息等较少数量的消息,Pub/Sub 可能会产生高延迟。

在上一个问题中,主题也不清楚。从 2016 年开始,谷歌云发布/订阅延迟是多少。

是否有任何关于 Pub/Sub 延迟和与消息量关系的定义指标?

latency message-queue google-cloud-pubsub

5
推荐指数
1
解决办法
6329
查看次数

MassTransit:合同类的模式和实践

  1. 微服务架构的常见建议是避免在微服务之间共享消息类。MassTransit 在发送/接收消息时严重依赖 .NET 类型信息,因此如果您在两个不同的微服务中声明两个相似的类型,它将不起作用。

可以通过一些额外的配置来实现这一点吗?

  1. MassTransit 中的典型模式是声明消息接口而不是 POCO,然后将匿名对象传递给Publish/Send方法。在这种情况下,如果我更改消息界面中的某些内容(例如,重命名属性),则不会出现编译时错误。

为什么推荐这个?如何处理匿名对象的脆弱性?

谢谢!

masstransit message-queue

5
推荐指数
1
解决办法
1014
查看次数