标签: amazon-mq

Amazon MQ 将 AMQP 消息转换为 JMS

我有一个 Python 和 Java Spring 应用程序以两种方式进行通信。该堆栈主要构建在 Java/Spring 上,因此 ActiveMQ 和 JMS 是合乎逻辑的选择。但是,我们添加了一个需要与其余服务交互的 Python 应用程序,因此我使用了 qpid proton(AMQP 库)并在 ActiveMQ 配置中添加了以下配置以使其工作:

<transportConnectors>
    <transportConnector name="openwire" uri="ssl://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="amqps" uri="amqp+ssl://0.0.0.0:5671?maximumConnections=1000&wireFormat.maxFrameSize=104857600&transport.transformer=jms"/>
</transportConnectors>
Run Code Online (Sandbox Code Playgroud)

它在 ActiveMQ 上完美运行,并允许使用 AMQP 客户端发送/接收 JMS TextMessage。

不幸的是,Amazon MQ 拒绝了此配置并返回了以下错误:

元素“transportConnector”上属性“name”的值“amqp+ssl”就其类型“protocol”而言无效。和 cvc-enumeration-valid:值 'amqps' 对于枚举 '[openwire]' 不是方面有效的

AWS 将 Amazon MQ 作为托管 ActiveMQ 服务进行营销,但它们似乎缺乏功能,因为从 5.8 版开始就可以使用从 AMQP 到 JMS 的映射:https : //activemq.apache.org/amqp和我的 Amazon MQ 代理m 使用的是版本 5.15.12

我尝试将amp;transport.transformer=jmstransport.transformer=jms标头添加到代理 URL 的查询字符串中,并在 Python 应用程序中使用 STOMP 作为协议(因为它是纯文本协议)而不是 AMQP,但这些都不起作用。

那么,您知道我可以在 Python 应用程序中发送 …

activemq-classic jms amqp amazon-mq

7
推荐指数
1
解决办法
390
查看次数

如何增加 AmazonMQ 最大连接数

2019-08-01 06:04:43,263 | 错误| 无法接受连接:org.apache.activemq.transport.tcp.ExceededMaximumConnectionsException:超出允许的最大客户端连接数。请参阅 ActiveMQ 配置文件(例如,activemq.xml)中 TCP 传输配置 URI 上的“maximumConnections”属性。org.apache.activemq.broker.TransportConnector | org.apache.activemq.broker.TransportConnector | ActiveMQ 传输服务器线程处理程序:nio+ssl://b-e13f27f2-1fa3-419f-819c-a24277e973a8-2.mq.us-west-2.amazonaws.com:61617?maximumConnections=100&wireFormat.maxFrameSize=104857600

在 amazonMQ 上出现上述异常,之前我们使用 activeMQ,我们设置了类似的内容

<transportConnectors>
        <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
    </transportConnectors>
Run Code Online (Sandbox Code Playgroud)

在 amazonMQ 中,我们无法找到此类选项,并且代理抛出异常。我们检查了 amazonMQ 支持的 TransportConnector :

  1. 姓名
  2. 更新集群客户端
  3. 重新平衡集群客户端
  4. 删除时更新 ClusterClients

知道如何增加最大连接的大小吗?

activemq-classic jms amazon-web-services broker amazon-mq

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

有没有办法在 amazonMQ 中测试故障转移?

我正在测试 amazonMQ 的主从功能,我想在负载下触发故障转移,并确保我的订阅者收到所有发送的消息。

我在 gui 或 cli 中看不到任何触发故障转移场景的选项。我尝试重新启动代理,但这会影响两个节点。可以预见的是,这导致我的测试失败,因为当我的客户端尝试重新连接时备用代理不可用。

令人欣慰的是,我的客户确实尝试立即重新连接到备用代理,但我仍然无法确定如果发生故障转移情况,所有消息都会通过。

这有可能吗?

node.js amazon-mq

5
推荐指数
0
解决办法
379
查看次数

带有.NET Core 2.0的AmazonMQ

有没有人设法通过SSL使用.NET Core 2.0连接到AmazonMQ?

我使用Apache.NMS.ActiveMQ.Core包连接时出现以下错误:

System.NotSupportedException: The requested security protocol is not supported.
   at System.Net.SecurityProtocol.ThrowOnNotAllowed(SslProtocols protocols, Boolean allowNone)
   at System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
   at Apache.NMS.ActiveMQ.Transport.Tcp.SslTransport.CreateSocketStream()
   at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.Start()
   at Apache.NMS.ActiveMQ.Transport.WireFormatNegotiator.Start()
   at Apache.NMS.ActiveMQ.Connection.CheckConnected()
   at Apache.NMS.ActiveMQ.Connection.CreateActiveMQSession(AcknowledgementMode ackMode)
   at SendToMQ.Program.SendMessage() in C:\GITLab\POC\SendToMQ\SendToMQ\SendToMQ\Program.cs:line 40
   at SendToMQ.Program.Main(String[] args) in C:\GITLab\POC\SendToMQ\SendToMQ\SendToMQ\Program.cs:line 15
Run Code Online (Sandbox Code Playgroud)

使用以下代码:

string url = "ssl://url:61617";
string userName = "name";
string password = "pw";


string payLoad = "This is a test.";
IConnectionFactory factory = new ConnectionFactory(new Uri(url));

using (IConnection connection = factory.CreateConnection(userName, password)) …
Run Code Online (Sandbox Code Playgroud)

activemq-classic .net-core amazon-mq

3
推荐指数
1
解决办法
1188
查看次数

如何使用 spring-messaging-5.1.* 连接 stomp+ssl 代理?

我想通过 websocket 使用 stomp 并打算与 Amazon MQ 集成,但 Amazon MQ 默认使用 stomp+ssl,然后我遇到了问题。

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Autowired
private ActiveMQProperties activeMQProperties;

/**
 * Register STOMP endpoints mapping each to a specific URL and (optionally)
 * enabling and configuring SockJS fallback options.
 *
 * @param registry
 */
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/endpoint").setAllowedOrigins("*");
}

/**
 * Configure message broker options.
 *
 * @param registry
 */
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.setApplicationDestinationPrefixes("/app");
    registry.enableStompBrokerRelay("/queue", "/topic")
            .setAutoStartup(true)
            .setVirtualHost(activeMQProperties.getHost())
            .setRelayHost(activeMQProperties.getHost()) …
Run Code Online (Sandbox Code Playgroud)

ssl stomp websocket spring-boot amazon-mq

3
推荐指数
1
解决办法
1335
查看次数

“消息:经纪人不可用。” 在spring websocket上实现stomp时出错

我正在使用 spring WebSocket、SockJs 和 Amazon MQ 构建一个示例聊天应用程序。当客户端订阅主题时,它会抛出“代理不可用”异常。所有入站流量规则都在 AWS 安全组中正确设置,并且代理也有 stomp 支持。我正在关注这个Spring Guide

如果我使用的是内存代理,它工作正常。我非常感谢您对此的帮助,以下是示例代码。

代理:Amazon MQ(内部使用 Active MQ)

版本:5.15.0

WebSocketConfig.java

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {

    registry.enableStompBrokerRelay("/topic")
            .setRelayHost("***********.mq.us-east-2.amazonaws.com").setRelayPort(61614)
            .setClientLogin("******").setClientPasscode("*****");

    registry.setApplicationDestinationPrefixes("/app");

}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {

    registry.addEndpoint("/chat-endpoint").withSockJS();
}
Run Code Online (Sandbox Code Playgroud)

应用程序启动日志

.......
INFO 14280 --- [alina-utility-1] o.s.m.s.s.StompBrokerRelayMessageHandler : Starting...

INFO 14280 --- [alina-utility-1] o.s.m.s.s.StompBrokerRelayMessageHandler : Starting "system" session, StompBrokerRelay[ReactorNettyTcpClient[reactor.netty.tcp.TcpClientDoOn@7acb7b3e]]

INFO 14280 --- [alina-utility-1] o.s.m.s.s.StompBrokerRelayMessageHandler : Started.
......
Run Code Online (Sandbox Code Playgroud)

客户

var socket = new SockJS('/chat-endpoint');
    stompClient = Stomp.over(socket);

    stompClient.connect({}, function(frame) {

        setConnected(true); …
Run Code Online (Sandbox Code Playgroud)

spring stomp sockjs spring-websocket amazon-mq

3
推荐指数
1
解决办法
1412
查看次数

spring boot 未连接到 AWS 中的 RabbitMQ

我正在尝试将我的 Spring-Boot 应用程序连接到作为 AWS 服务托管的 RabbitMQ。启动应用程序时出现以下异常。

我还包括 java 异常、Spring Boot 和 AWS 的配置

2021-05-15 09:31:50.651[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[           main][0;39m [36mo.s.j.e.a.AnnotationMBeanExporter       [0;39m [2m:[0;39m Bean with name 'rabbitConnectionFactory' has been autodetected for JMX exposure
[2m2021-05-15 09:31:50.655[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[           main][0;39m [36mo.s.j.e.a.AnnotationMBeanExporter       [0;39m [2m:[0;39m Located managed bean 'rabbitConnectionFactory': registering with JMX server as MBean [org.springframework.amqp.rabbit.connection:name=rabbitConnectionFactory,type=CachingConnectionFactory]
[2m2021-05-15 09:31:50.678[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[           main][0;39m [36mo.s.c.support.DefaultLifecycleProcessor [0;39m [2m:[0;39m Starting beans in phase 0
[2m2021-05-15 09:31:50.678[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[           main][0;39m …
Run Code Online (Sandbox Code Playgroud)

spring amazon-web-services spring-rabbit spring-boot amazon-mq

3
推荐指数
1
解决办法
4245
查看次数

AMAZON MQ 是否提供 TCP 端点?

我在 Amazon MQ 上创建了一个代理,并在端口 61617 上获得了一个 SSL 端点。我也在寻找一个非 SSL 端点(就像我们可以在 Active MQ 上的 61616 上拥有 tcp)。Amazon MQ 是否仅提供 SSL?无论如何,我们也可以获得TCP端点吗?

activemq-classic amazon-web-services amazon-mq

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

Amazon MQ 上的自定义域

我已经设置了一个 Amazon MQ 代理,并且您生成了一个域 *.mq.eu-west-2.amazonaws.com

生成的是一个非常长的 DN,我想要做的是将其映射到我自己域的子域。

由于所有 AWS 服务都通过 SSL,我还需要该子域的证书,我通常只使用 ACM。

问题是我不能只生成域的 CNAME,然后生成 SSL 证书,因为这不起作用。AWS在route53中提供了所谓的ALIAS A记录,对于其他服务来说可以解决这个问题,但它似乎不适用于Amazon MQ。您获得的选项不包括 MQ 服务。

看看一些 AWS 文档,听起来我需要执行以下操作(但看起来有点矫枉过正)

  1. 创建私人经纪人
  2. 创建网络负载均衡器
  3. 将两者连接在一起(这非常困难,我无法让它工作)
  4. 将我的子域 CNAME 到 NLB

还有其他人对如何最好地解决这个问题有任何建议吗?

amazon-web-services amazon-route53 amazon-mq

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