连接到 AWS 上设置的 ActiveMQ 时连接会在几秒钟后关闭
Posted
技术标签:
【中文标题】连接到 AWS 上设置的 ActiveMQ 时连接会在几秒钟后关闭【英文标题】:Connection closes after few seconds when connecting to ActiveMQ set up on AWS 【发布时间】:2018-11-10 22:29:19 【问题描述】:我正在连接到托管在 AWS 上的 Apache Active MQ,以将我的应用程序集成到自定义服务中。我需要一直保持这种运行状态,而不是像现在这样一次。下面的代码有效,但仅适用于一条消息,我需要始终保持连接处于活动状态,以便接收所有消息。 这是代码。
using Apache.NMS;
using Apache.NMS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ApacheMQAsync
class Program
protected static ITextMessage message = null;
public static void Main(string[] args)
Uri connecturi = new Uri("URL:61617");
Console.WriteLine("About to connect to " + connecturi);
// NOTE: ensure the nmsprovider-activemq.config file exists in the executable folder.
IConnectionFactory factory = new Apache.NMS.ActiveMQ.ConnectionFactory(connecturi);
IConnection connection = factory.CreateConnection("username", "password");
ISession session = connection.CreateSession();
IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR");
Console.WriteLine("Using destination: " + destination);
// Create a consumer and producer
IMessageConsumer consumer = session.CreateConsumer(destination);
consumer.Listener += new MessageListener(OnMessage);
connection.Start();
// Wait for the message
if (message == null)
Console.WriteLine("No message received!");
else
Console.WriteLine("Received message with ID: " + message.NMSMessageId);
Console.WriteLine("Received message with text: " + message.Text);
protected static void OnMessage(IMessage receivedMsg)
message = receivedMsg as ITextMessage;
message.Acknowledge();
在控制台上显示如下 没有收到消息! 几秒钟后控制台存在?
【问题讨论】:
【参考方案1】:那里没有真正的魔法,您需要做一些事情来保持您的应用程序运行,例如暂停控制台输入或循环睡眠或其他等待类型的调用,然后检查您的应用程序是否应该继续运行。 JMS 客户端不能保证让您的应用程序保持打开和运行,您永远不应该依赖它。
【讨论】:
谢谢蒂姆,你的意思是把它放在一个循环中,比如 while(true)? 为您的应用程序和业务逻辑做任何事情以上是关于连接到 AWS 上设置的 ActiveMQ 时连接会在几秒钟后关闭的主要内容,如果未能解决你的问题,请参考以下文章
连接到 Mysql AWS RDS 实例时工作台错误 10060
通过 SSH 隧道连接到 .Net Core 中的 AWS DocumentDb
JPA 无法从 Beanstalk 连接到 AWS RDS,但它可以在本地工作