我最近将服务器从ActiveMQ从5.8升级到最新(5.11.1).从那以后,我偶尔会注意到消息会在特定队列中累积而不会被取消.
我们的架构有一个生产者,一个消费者.我可以看到消费者仍然是连接的,但消息正在从生产者堆积起来.我的解决方案是通过Web控制台删除队列.之后,我立即看到消费者重新连接并再次开始处理消息.
如果它是相关的,在这种情况下,生产者在.NET上运行NMS,而消费者在Java 1.7上运行JMS.
from ..box_utils import decode, nms
Run Code Online (Sandbox Code Playgroud)
该行显示错误
ImportError:尝试相对导入,没有已知的父包
这是什么错误,以及如何解决该错误?
我正在Windows .NET环境中使用RabbitMQ,ActiveMQ和Apache Artemis进行一些测试.RabbitMQ和ActiveMQ附带一个Web界面,您可以在其中查看有关您的经纪人,队列,消息等的信息,但Artemis没有.我真的希望能够在Web界面中监控我的Artemis代理,或者至少使用一些cmd/PowerShell命令.
我在这个页面上读到了一些可用于监控ActiveMQ实例的第三方工具,我认为它也适用于Artemis.不幸的是,我无法使用这些第三方工具.其中一些似乎在Windows上运行不正常,有些是旧的/不活动的.
我的客户通过C#中的NMS(.NET Messaging API)与代理进行通信.如果有人能够监控他们的Artemis经纪人,特别是在Windows机器上,请告诉我你是如何做到的!
编辑:
我现在已经设法与Jolokia REST API进行通信.通过GET请求,
http://username:password@localhost:8161/jolokia/read/org.apache.activemq.artemis:*
我可以看到有关我的队列的大量信息,例如添加和使用的消息.这是一个很好的信息,可以帮助我,但我想了解有关当前内存使用情况和磁盘使用情况的信息.
我试图使用Apache.NMS.WCF绑定WCF应用程序并获得以下错误 -
合同需要TwoWay(请求 - 回复或双工),但是Binding'NmsBinding'不支持它,或者没有正确配置以支持它.
我的system.service模型看起来像这样 -
<bindings>
<nmsBinding>
<binding
name="myNMSBinding"
destination="test.queue"
destinationType="TemporaryQueue"
>
</binding>
</nmsBinding>
</bindings>
<extensions>
<!--<bindingElementExtensions>
<add name="nmsTransPort"
type="Apache.NMS.WCF.NmsTransportElement, Apache.NMS.WCF, Version=1.1.0.1642, Culture=neutral, PublicKeyToken=82756feee3957618" />
</bindingElementExtensions>-->
<bindingExtensions>
<add name="nmsBinding"
type="Apache.NMS.WCF.NmsBindingCollection, Apache.NMS.WCF, Version=1.1.0.1642, Culture=neutral, PublicKeyToken=82756feee3957618"
/>
</bindingExtensions>
</extensions>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
<!-- Service Endpoints -->
<endpoint
address="tcp://localhost:61616"
binding="nmsBinding"
bindingConfiguration="myNMSBinding"
contract="WcfService1.IService1"
/>
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
有没有办法将Apache NMS配置为双工或者它不支持它?
我在.Net程序中使用ActiveMQ,我充斥着消息事件.
简而言之,当我得到一个队列事件'onMessage(IMessage receivedMsg)'时,我将消息放入一个内部队列,X线程就是这样做的.
起初,我在创建会话时有'AcknowledgementMode.AutoAcknowledge',所以我猜测队列中的所有消息都被吸入并放入内存队列(因为崩溃,所以一切都丢失了,这是冒险的).
所以我在创建会话时使用了'AcknowledgementMode.ClientAcknowledge',当工作人员准备好了消息时,它会在消息上调用'commit()'方法.但是,仍然会从队列中删除所有消息.
如何配置它只处理X个消息或处于内部队列中,并且不是所有内容都被立即"下载"了?
我需要能够使用Apache.NMS(C#)以编程方式清除队列.我一直在查看NMS API,但看不到这样的功能.它存在吗?
我正在尝试通读 ActiveMQ 消息并根据一些过滤器来处理其中一些消息或将其他消息留在队列中。我将 NMS API 与以下代码一起使用:
Uri connecturi = new Uri("activemq:tcp://model.net:61616");
IConnectionFactory factory = new NMSConnectionFactory(connecturi);
List<ModelBuilderBase> result = new List<ModelBuilderBase>();
using (IConnection connection = factory.CreateConnection())
using (ISession session = connection.CreateSession())
{
IDestination destination = SessionUtil.GetDestination(session, "queue://cidModelbuilderQ");
using (IMessageConsumer consumer = session.CreateConsumer(destination))
{
connection.Start();
ITextMessage message;
while ((message = consumer.ReceiveNoWait() as ITextMessage) != null)
{
if (message.Properties[MANDATOR] == null || message.Properties[REFCODE] == null)
continue;
var mandator = message.Properties[MANDATOR].ToString();
var refCode = message.Properties[REFCODE].ToString();
result.Add(ModelBuilderFactory.Instance.GetInstance(refCode, mandator));
}
}
Run Code Online (Sandbox Code Playgroud)
问题是收到消息后,消息被删除。我可以以某种方式更改此行为并仅在成功处理后手动删除消息吗?}
我有使用nms.activemq 1.5.0的C#应用程序.
当我的应用程序启动时,它尝试使用故障转移协议连接到代理(我在主从配置中有两个代理).
如果我的应用程序中的两个经纪人都因为等待而陷入等待connection.start().
我尝试了在网上找到的每一点信息 - 我尝试了故障转移协议的每个属性,也试过设置连接超时,尝试过transport.requesttimeout.
我也尝试过更新版本的nms.activemq,但似乎没有解决问题.
什么可以导致这个问题或任何解决方法?
我有ActiveMQ的.Net客户端。我正在使用Apache.NMS 1.5.1.2739和Apache.NMS.ActiveMQ 1.5.6.2746
我使用以下代码连接到代理:
var connectionFactory = new ConnectionFactory("failover:tcp://127.0.0.1:61616/?transport.timeout=5000");
IConnection connection = connectionFactory.CreateConnection();
connection.Start();
Run Code Online (Sandbox Code Playgroud)
问题是当没有可用的ActiveMQ代理时,connection.Start()将永远挂起。因此,transport.timeout在这里没有帮助。我想Start()方法超时。因此,在这段时间之后,发生异常,执行可能会继续进行。如何避免这样的问题?
我正在做将python代码转换为C++的项目,以获得更好的性能。该 python 项目名称是 Advanced EAST,现在,我在 .csv 文件中获得了 nms 函数的输入数据,如下所示:
"[ 5.9358170e-04 5.2773970e-01 5.0061589e-01 -1.3098677e+00
-2.7747922e+00 1.5079222e+00 -3.4586751e+00]","[ 3.8175487e-05 6.3440394e-01 7.0218205e-01 -1.5393494e+00
-5.1545496e+00 4.2795391e+00 -3.4941311e+00]","[ 4.6003381e-05 5.9677261e-01 6.6983813e-01 -1.6515008e+00
-5.1606908e+00 5.2009044e+00 -3.0518508e+00]","[ 5.5172237e-05 5.8421570e-01 5.9929764e-01 -1.8425952e+00
-5.2444854e+00 4.5013981e+00 -2.7876694e+00]","[ 5.2929961e-05 5.4777789e-01 6.4851379e-01 -1.3151239e+00
-5.1559062e+00 5.2229333e+00 -2.4008298e+00]","[ 8.0250458e-05 6.1284608e-01 6.1014801e-01 -1.8556541e+00
-5.0002270e+00 5.2796564e+00 -2.2154367e+00]","[ 8.1256607e-05 6.1321974e-01 5.9887391e-01 -2.2241254e+00
-4.7920742e+00 5.4237065e+00 -2.2534993e+00]
Run Code Online (Sandbox Code Playgroud)
一个单位是 7 个数字,但是在前四个数字后有一个 '\n',我想将此 csv 文件读入我的 C++ 项目,以便我可以在 C++ 中进行数学工作,使其更快。
using namespace std;
void read_csv(const string &filename)
{
//File pointer
fstream …Run Code Online (Sandbox Code Playgroud) 我有以下控制台程序,用于侦听 ActiveMQ Stomp 服务器上的目标(队列或主题,这并不重要),并简单地将收到的消息记录到控制台:
\n\nusing System;\nusing Apache.NMS.Stomp;\nusing Apache.NMS;\nusing Apache.NMS.Util;\n\nnamespace StompTest\n{\n class Program\n {\n static void Main(string[] args)\n {\n try\n {\n var connectionFactory = new ConnectionFactory("stomp:tcp://mybroker:61613");\n\n var connection = connectionFactory.CreateConnection();\n connection.ExceptionListener += new ExceptionListener(connection_ExceptionListener);\n connection.Start();\n\n var session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);\n\n IDestination dest = SessionUtil.GetDestination(session, "queue://MyQueue");\n\n var consumer = session.CreateConsumer(dest);\n consumer.Listener += new MessageListener(consumer_Listener);\n\n Console.ReadKey();\n }\n catch (NMSException ex)\n {\n Console.WriteLine("NMSException !! ==> " + ex.Message);\n }\n }\n\n static void connection_ExceptionListener(Exception exception)\n {\n Console.WriteLine("Exception!! ==> " + exception.ToString());\n }\n\n static void consumer_Listener(IMessage …Run Code Online (Sandbox Code Playgroud)