[
https://issues.apache.org/jira/browse/AMQNET-294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12973860#action_12973860
]
Timothy Bish commented on AMQNET-294:
-------------------------------------
Here's a simple consumer that listens to the events, you just need to code up
the close of the MessageConsumer and recreate it in the callback.
{noformat}
using System;
using System.Threading;
using System.Text;
using System.Net;
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.ActiveMQ.Commands;
namespace SimpleConsumer
{
public class SimpleConsumer
{
private IConnection connection;
private ISession session;
private IMessageConsumer consumer;
private IDestination destination;
public SimpleConsumer()
{
}
public void Connect()
{
Apache.NMS.ActiveMQ.ConnectionFactory factory = new
ConnectionFactory(
"failover:(tcp://localhost:61616?keepAlive=true&wireFormat.maxInactivityDuration=300000&wireFormat.tcpNoDelayEnabled=true)?initialReconnectDelay=100&randomize=false&timeout=1500");
connection = factory.CreateConnection();
connection.ConnectionInterruptedListener += new
ConnectionInterruptedListener(OnTransportInterrupted);
connection.ConnectionResumedListener += new
ConnectionResumedListener(OnTransportResumed);
session =
connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
destination = session.GetQueue("TEST-FOO");
consumer = session.CreateConsumer(destination);
consumer.Listener += new MessageListener(OnMessage);
}
protected void OnTransportInterrupted()
{
Console.WriteLine("***** Connection Reports the Transport Was
Interrupted. *****");
}
protected void OnTransportResumed()
{
Console.WriteLine("***** Connection Reports the Transport Was
Restored. *****");
}
protected void OnMessage(IMessage message)
{
bool wasCompressed = (message as ActiveMQMessage).Compressed;
string compressedState = wasCompressed ? "Compressed" :
"Uncompressed";
Console.WriteLine("OnMessage Called with a {0} message of Type:
{1}",
compressedState, message.GetType().Name);
if(message is ITextMessage)
{
ITextMessage textMsg = message as ITextMessage;
Console.WriteLine("Message was ITextMessage, value of Text = "
+ textMsg.Text);
}
}
public void Close()
{
consumer.Close();
session.Close();
connection.Close();
}
public void Run()
{
connection.Start();
while(!Console.KeyAvailable)
{
Thread.Sleep(1000);
}
}
}
}
{noformat}
> durable subscription message loss when master broker fails to slave
> -------------------------------------------------------------------
>
> Key: AMQNET-294
> URL: https://issues.apache.org/jira/browse/AMQNET-294
> Project: ActiveMQ .Net
> Issue Type: Bug
> Components: NMS
> Affects Versions: 1.4.1
> Environment: Windows 7 (client), Windows Server 2008 64-bit (server
> brokers run on), Sql Server 2008 (database)
> Reporter: Mark Gellings
> Assignee: Jim Gomes
> Fix For: 1.5.0
>
> Attachments: Apache.NMS.Test (2).zip, Apache.NMS.Test.zip,
> DurableConsumerTest.cs, DurableSubscriberFailoverTest.java, NMSLog.txt,
> NMSLogLocalFreshCannedActiveMQ542Broker.txt, TimsTestRevisedSlightly.zip
>
>
> We are seeing message loss on a durable subscription when using NMS ActiveMQ
> v1.4.1 and ActiveMQ v5.4.1.
> Please run the included NUnit test and watch the console output. When it
> says "Failover the broker now!" do as it says. About 75% of the time less
> than half of the expected 250 messages come through.
> Using version 1.1 of NMS the majority of the time the test passes. I have
> seen it fail only a few times with this earlier version, and when it does
> there are only a couple messages that don't come through.
> In the zip file will be the unit test, and a config directory containing the
> master and slave activemq configurations. We are using JDBC master/slave.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.