You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Jason Vas Dias <ja...@gmail.com> on 2015/07/14 15:13:45 UTC

how to disable InactivityMonitor with ActiveMQ 5.7.0.fuse-71-047 ?

Good day -

I have an ActiveMQ 5.7.0.fuse-71-047 server setup with this in its
at-broker-context.xml
(main configuration file) :

 <transportConnectors>
    <transportConnector
uri="tcp://localhost:${my_apps_broker_port_property}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
  </transportConnectors>

Yet still  when clients connect to the broker, they end up using a
non-zero timeout :
2015-07-14 13:48:27,563 [ActiveMQ InactivityMonitor Worker] WARN
broker.TransportConnection.Transport  - Transport Connection to:
tcp://127.0.0.1:43475 failed:
org.apache.activemq.transport.InactivityIOException: Channel was
inactive for too (>30000) long: tcp://127.0.0.1:43475

Unfortunately, I cannot set any ActiveMQ specific connection
properties on the client side,
as the clients are using the plain JMS library (javax:jms:1.1-SP1) to
get a connection.

But the ActiveMQ documentation suggests that if the server has disabled the
InactivityMonitor, then clients should be unable to negotiate a
non-zero timeout :

http://activemq.apache.org/activemq-inactivitymonitor.html says:
<quote>
...
transport.useInactivityMonitor  true    A value of false disables the
InactivityMonitor completely and connections will never time out. By
default it is enabled.
...
At startup the InactivityMonitor negotiates the appropriate
maxInactivityDuration and maxInactivityDurationInitalDelay. The
shortest duration is taken for the connection.
...
Setting transport.useInactivityMonitor=false will disable the
InactivityMonitor. Configuring wireFormat.maxInactivityDuration=0 will
achieve the same result.
</quote>

None of the statements made in the documentation appear to be true in my case.

I am now looking at producing a patched version of
ActiveMQ-5.7.0.fuse-71-047 that completely removes and disables the
InactivityMonitor because of this issue.

Would anyone have any suggestions as to how the InactivityMonitor
might be disabled
in the SERVER configuration with ActiveMQ 5.7.0 ?  Changing ActiveMQ version
is not an option.

Thanks & Regards,
Jason

Re: how to disable InactivityMonitor with ActiveMQ 5.7.0.fuse-71-047 ?

Posted by Christopher Shannon <ch...@gmail.com>.
Try replacing the & in your xml with &amp;

That should take care of the xml parsing.

<transportConnectors>
    <transportConnector
uri="tcp://localhost:${com.newbay.whitelabel.ContentIngestionTestSuite.
ports.sal_vm.jms_broker}?jms.prefetchPolicy.all=1&amp;transport.
useInactivityMonitor=false&amp;wireFormat.maxInactivityDuration=0"/>
  </transportConnectors>

On Tue, Jul 14, 2015 at 10:37 AM, Jason Vas Dias <ja...@gmail.com>
wrote:

> On 14/07/2015, Christopher Shannon <ch...@gmail.com>
> wrote:
> > The useInactivityMonitor option appears to have been added in 5.3.0 and
> > maxInactivityDuration even earlier than that.
> >
>
> Yes, but they do not work!
>
> > You can set the properties on your connection string in the client.
> >
> > For example:
> >
> > tcp://localhost:61616?transport.useInactivityMonitor=false&wireformat.
> > maxInactivityDuration=0
> >
>
> Actually, if you try to use that string in an XML configuration file,
> you'll get a SAX Parser
> exception : parameters in the URL must be separated by ';' , not '&' .
>
> As I stated in my original post, I AM using a server configuration URL of :
>
>
>  <transportConnectors>
>     <transportConnector
>
> uri="tcp://localhost:${com.newbay.whitelabel.ContentIngestionTestSuite.ports.sal_vm.jms_broker}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
>   </transportConnectors>
>
> But this has no effect. If I try and add ampersands to the above URL I
> get a SAX XML parser
> exception.
>
> Also as stated in my original mail I am unable to add parameters to
> the client connection URL .
>
> I am now focusing on trying to rebuild ActiveMQ with the
> InactivityMonitor disabled by
> default because of this issue.
>
> Any known workarounds ?
>
> >
> > On Tue, Jul 14, 2015 at 9:52 AM, Jason Vas Dias <
> jason.vas.dias@gmail.com>
> > wrote:
> >
> >> Here's some debug output showing the timeout negotiation from the
> client:
> >>
> >> 2015-07-14 14:27:48,969 [main] DEBUG
> >> activemq.transport.WireFormatNegotiator  - Sending: WireFormatInfo {
> >> version=9, properties={MaxFrameSize=9223372036854775807,
> >> CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false,
> >> MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
> >> MaxInactivityDuration=30000, TightEncodingEnabled=true,
> >> StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
> >> 2015-07-14 14:27:49,004 [ActiveMQ Transport:
> >> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> >> activemq.transport.InactivityMonitor  - Using min of local:
> >> WireFormatInfo { version=9,
> >> properties={MaxFrameSize=9223372036854775807, CacheSize=1024,
> >> CacheEnabled=true, SizePrefixDisabled=false,
> >> MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
> >> MaxInactivityDuration=30000, TightEncodingEnabled=true,
> >> StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote:
> >> WireFormatInfo { version=9, properties={CacheSize=1024,
> >> MaxFrameSize=9223372036854775807, CacheEnabled=true,
> >> SizePrefixDisabled=false, TcpNoDelayEnabled=true,
> >> MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
> >> TightEncodingEnabled=true, StackTraceEnabled=true},
> >> magic=[A,c,t,i,v,e,M,Q]}
> >> 2015-07-14 14:27:49,004 [ActiveMQ Transport:
> >> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> >> activemq.transport.WireFormatNegotiator  - Received WireFormat:
> >> WireFormatInfo { version=9, properties={CacheSize=1024,
> >> MaxFrameSize=9223372036854775807, CacheEnabled=true,
> >> SizePrefixDisabled=false, TcpNoDelayEnabled=true,
> >> MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
> >> TightEncodingEnabled=true, StackTraceEnabled=true},
> >> magic=[A,c,t,i,v,e,M,Q]}
> >> 2015-07-14 14:27:49,005 [ActiveMQ Transport:
> >> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> >> activemq.transport.WireFormatNegotiator  -
> >> tcp://localhost/127.0.0.1:61616@43697 before negotiation:
> >> OpenWireFormat{version=9, cacheEnabled=false, stackTraceEnabled=false,
> >> tightEncodingEnabled=false, sizePrefixDisabled=false,
> >> maxFrameSize=9223372036854775807}
> >> 2015-07-14 14:27:49,005 [ActiveMQ Transport:
> >> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> >> activemq.transport.WireFormatNegotiator  -
> >> tcp://localhost/127.0.0.1:61616@43697 after negotiation:
> >> OpenWireFormat{version=9, cacheEnabled=true, stackTraceEnabled=true,
> >> tightEncodingEnabled=true, sizePrefixDisabled=false,
> >> maxFrameSize=9223372036854775807}
> >>
> >> So the server seems to be completely ignoring my specified settings of :
> >>     transport.useInactivityMonitor=false; maxInactivityDuration=0;
> >>
> >> I guess ActiveMQ 5.7.0.x is incapable of disabling its InactivityMonitor
> >> ?
> >> Can anyone confirm or deny this ?
> >>
> >> Thanks & Regards,
> >> Jason
> >>
> >> On 14/07/2015, Jason Vas Dias <ja...@gmail.com> wrote:
> >> > Good day -
> >> >
> >> > I have an ActiveMQ 5.7.0.fuse-71-047 server setup with this in its
> >> > at-broker-context.xml
> >> > (main configuration file) :
> >> >
> >> >  <transportConnectors>
> >> >     <transportConnector
> >> >
> >>
> uri="tcp://localhost:${my_apps_broker_port_property}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
> >> >   </transportConnectors>
> >> >
> >> > Yet still  when clients connect to the broker, they end up using a
> >> > non-zero timeout :
> >> > 2015-07-14 13:48:27,563 [ActiveMQ InactivityMonitor Worker] WARN
> >> > broker.TransportConnection.Transport  - Transport Connection to:
> >> > tcp://127.0.0.1:43475 failed:
> >> > org.apache.activemq.transport.InactivityIOException: Channel was
> >> > inactive for too (>30000) long: tcp://127.0.0.1:43475
> >> >
> >> > Unfortunately, I cannot set any ActiveMQ specific connection
> >> > properties on the client side,
> >> > as the clients are using the plain JMS library (javax:jms:1.1-SP1) to
> >> > get a connection.
> >> >
> >> > But the ActiveMQ documentation suggests that if the server has
> disabled
> >> the
> >> > InactivityMonitor, then clients should be unable to negotiate a
> >> > non-zero timeout :
> >> >
> >> > http://activemq.apache.org/activemq-inactivitymonitor.html says:
> >> > <quote>
> >> > ...
> >> > transport.useInactivityMonitor  true    A value of false disables the
> >> > InactivityMonitor completely and connections will never time out. By
> >> > default it is enabled.
> >> > ...
> >> > At startup the InactivityMonitor negotiates the appropriate
> >> > maxInactivityDuration and maxInactivityDurationInitalDelay. The
> >> > shortest duration is taken for the connection.
> >> > ...
> >> > Setting transport.useInactivityMonitor=false will disable the
> >> > InactivityMonitor. Configuring wireFormat.maxInactivityDuration=0 will
> >> > achieve the same result.
> >> > </quote>
> >> >
> >> > None of the statements made in the documentation appear to be true in
> >> > my
> >> > case.
> >> >
> >> > I am now looking at producing a patched version of
> >> > ActiveMQ-5.7.0.fuse-71-047 that completely removes and disables the
> >> > InactivityMonitor because of this issue.
> >> >
> >> > Would anyone have any suggestions as to how the InactivityMonitor
> >> > might be disabled
> >> > in the SERVER configuration with ActiveMQ 5.7.0 ?  Changing ActiveMQ
> >> > version
> >> > is not an option.
> >> >
> >> > Thanks & Regards,
> >> > Jason
> >> >
> >>
> >
>

Re: how to disable InactivityMonitor with ActiveMQ 5.7.0.fuse-71-047 ?

Posted by Jason Vas Dias <ja...@gmail.com>.
On 14/07/2015, Christopher Shannon <ch...@gmail.com> wrote:
> The useInactivityMonitor option appears to have been added in 5.3.0 and
> maxInactivityDuration even earlier than that.
>

Yes, but they do not work!

> You can set the properties on your connection string in the client.
>
> For example:
>
> tcp://localhost:61616?transport.useInactivityMonitor=false&wireformat.
> maxInactivityDuration=0
>

Actually, if you try to use that string in an XML configuration file,
you'll get a SAX Parser
exception : parameters in the URL must be separated by ';' , not '&' .

As I stated in my original post, I AM using a server configuration URL of :


 <transportConnectors>
    <transportConnector
uri="tcp://localhost:${com.newbay.whitelabel.ContentIngestionTestSuite.ports.sal_vm.jms_broker}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
  </transportConnectors>

But this has no effect. If I try and add ampersands to the above URL I
get a SAX XML parser
exception.

Also as stated in my original mail I am unable to add parameters to
the client connection URL .

I am now focusing on trying to rebuild ActiveMQ with the
InactivityMonitor disabled by
default because of this issue.

Any known workarounds ?

>
> On Tue, Jul 14, 2015 at 9:52 AM, Jason Vas Dias <ja...@gmail.com>
> wrote:
>
>> Here's some debug output showing the timeout negotiation from the client:
>>
>> 2015-07-14 14:27:48,969 [main] DEBUG
>> activemq.transport.WireFormatNegotiator  - Sending: WireFormatInfo {
>> version=9, properties={MaxFrameSize=9223372036854775807,
>> CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false,
>> MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
>> MaxInactivityDuration=30000, TightEncodingEnabled=true,
>> StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
>> 2015-07-14 14:27:49,004 [ActiveMQ Transport:
>> tcp://localhost/127.0.0.1:61616@43697] DEBUG
>> activemq.transport.InactivityMonitor  - Using min of local:
>> WireFormatInfo { version=9,
>> properties={MaxFrameSize=9223372036854775807, CacheSize=1024,
>> CacheEnabled=true, SizePrefixDisabled=false,
>> MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
>> MaxInactivityDuration=30000, TightEncodingEnabled=true,
>> StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote:
>> WireFormatInfo { version=9, properties={CacheSize=1024,
>> MaxFrameSize=9223372036854775807, CacheEnabled=true,
>> SizePrefixDisabled=false, TcpNoDelayEnabled=true,
>> MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
>> TightEncodingEnabled=true, StackTraceEnabled=true},
>> magic=[A,c,t,i,v,e,M,Q]}
>> 2015-07-14 14:27:49,004 [ActiveMQ Transport:
>> tcp://localhost/127.0.0.1:61616@43697] DEBUG
>> activemq.transport.WireFormatNegotiator  - Received WireFormat:
>> WireFormatInfo { version=9, properties={CacheSize=1024,
>> MaxFrameSize=9223372036854775807, CacheEnabled=true,
>> SizePrefixDisabled=false, TcpNoDelayEnabled=true,
>> MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
>> TightEncodingEnabled=true, StackTraceEnabled=true},
>> magic=[A,c,t,i,v,e,M,Q]}
>> 2015-07-14 14:27:49,005 [ActiveMQ Transport:
>> tcp://localhost/127.0.0.1:61616@43697] DEBUG
>> activemq.transport.WireFormatNegotiator  -
>> tcp://localhost/127.0.0.1:61616@43697 before negotiation:
>> OpenWireFormat{version=9, cacheEnabled=false, stackTraceEnabled=false,
>> tightEncodingEnabled=false, sizePrefixDisabled=false,
>> maxFrameSize=9223372036854775807}
>> 2015-07-14 14:27:49,005 [ActiveMQ Transport:
>> tcp://localhost/127.0.0.1:61616@43697] DEBUG
>> activemq.transport.WireFormatNegotiator  -
>> tcp://localhost/127.0.0.1:61616@43697 after negotiation:
>> OpenWireFormat{version=9, cacheEnabled=true, stackTraceEnabled=true,
>> tightEncodingEnabled=true, sizePrefixDisabled=false,
>> maxFrameSize=9223372036854775807}
>>
>> So the server seems to be completely ignoring my specified settings of :
>>     transport.useInactivityMonitor=false; maxInactivityDuration=0;
>>
>> I guess ActiveMQ 5.7.0.x is incapable of disabling its InactivityMonitor
>> ?
>> Can anyone confirm or deny this ?
>>
>> Thanks & Regards,
>> Jason
>>
>> On 14/07/2015, Jason Vas Dias <ja...@gmail.com> wrote:
>> > Good day -
>> >
>> > I have an ActiveMQ 5.7.0.fuse-71-047 server setup with this in its
>> > at-broker-context.xml
>> > (main configuration file) :
>> >
>> >  <transportConnectors>
>> >     <transportConnector
>> >
>> uri="tcp://localhost:${my_apps_broker_port_property}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
>> >   </transportConnectors>
>> >
>> > Yet still  when clients connect to the broker, they end up using a
>> > non-zero timeout :
>> > 2015-07-14 13:48:27,563 [ActiveMQ InactivityMonitor Worker] WARN
>> > broker.TransportConnection.Transport  - Transport Connection to:
>> > tcp://127.0.0.1:43475 failed:
>> > org.apache.activemq.transport.InactivityIOException: Channel was
>> > inactive for too (>30000) long: tcp://127.0.0.1:43475
>> >
>> > Unfortunately, I cannot set any ActiveMQ specific connection
>> > properties on the client side,
>> > as the clients are using the plain JMS library (javax:jms:1.1-SP1) to
>> > get a connection.
>> >
>> > But the ActiveMQ documentation suggests that if the server has disabled
>> the
>> > InactivityMonitor, then clients should be unable to negotiate a
>> > non-zero timeout :
>> >
>> > http://activemq.apache.org/activemq-inactivitymonitor.html says:
>> > <quote>
>> > ...
>> > transport.useInactivityMonitor  true    A value of false disables the
>> > InactivityMonitor completely and connections will never time out. By
>> > default it is enabled.
>> > ...
>> > At startup the InactivityMonitor negotiates the appropriate
>> > maxInactivityDuration and maxInactivityDurationInitalDelay. The
>> > shortest duration is taken for the connection.
>> > ...
>> > Setting transport.useInactivityMonitor=false will disable the
>> > InactivityMonitor. Configuring wireFormat.maxInactivityDuration=0 will
>> > achieve the same result.
>> > </quote>
>> >
>> > None of the statements made in the documentation appear to be true in
>> > my
>> > case.
>> >
>> > I am now looking at producing a patched version of
>> > ActiveMQ-5.7.0.fuse-71-047 that completely removes and disables the
>> > InactivityMonitor because of this issue.
>> >
>> > Would anyone have any suggestions as to how the InactivityMonitor
>> > might be disabled
>> > in the SERVER configuration with ActiveMQ 5.7.0 ?  Changing ActiveMQ
>> > version
>> > is not an option.
>> >
>> > Thanks & Regards,
>> > Jason
>> >
>>
>

Re: how to disable InactivityMonitor with ActiveMQ 5.7.0.fuse-71-047 ?

Posted by Christopher Shannon <ch...@gmail.com>.
The useInactivityMonitor option appears to have been added in 5.3.0 and
maxInactivityDuration even earlier than that.

You can set the properties on your connection string in the client.

For example:

tcp://localhost:61616?transport.useInactivityMonitor=false&wireformat.
maxInactivityDuration=0


On Tue, Jul 14, 2015 at 9:52 AM, Jason Vas Dias <ja...@gmail.com>
wrote:

> Here's some debug output showing the timeout negotiation from the client:
>
> 2015-07-14 14:27:48,969 [main] DEBUG
> activemq.transport.WireFormatNegotiator  - Sending: WireFormatInfo {
> version=9, properties={MaxFrameSize=9223372036854775807,
> CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false,
> MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
> MaxInactivityDuration=30000, TightEncodingEnabled=true,
> StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
> 2015-07-14 14:27:49,004 [ActiveMQ Transport:
> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> activemq.transport.InactivityMonitor  - Using min of local:
> WireFormatInfo { version=9,
> properties={MaxFrameSize=9223372036854775807, CacheSize=1024,
> CacheEnabled=true, SizePrefixDisabled=false,
> MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
> MaxInactivityDuration=30000, TightEncodingEnabled=true,
> StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote:
> WireFormatInfo { version=9, properties={CacheSize=1024,
> MaxFrameSize=9223372036854775807, CacheEnabled=true,
> SizePrefixDisabled=false, TcpNoDelayEnabled=true,
> MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
> TightEncodingEnabled=true, StackTraceEnabled=true},
> magic=[A,c,t,i,v,e,M,Q]}
> 2015-07-14 14:27:49,004 [ActiveMQ Transport:
> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> activemq.transport.WireFormatNegotiator  - Received WireFormat:
> WireFormatInfo { version=9, properties={CacheSize=1024,
> MaxFrameSize=9223372036854775807, CacheEnabled=true,
> SizePrefixDisabled=false, TcpNoDelayEnabled=true,
> MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
> TightEncodingEnabled=true, StackTraceEnabled=true},
> magic=[A,c,t,i,v,e,M,Q]}
> 2015-07-14 14:27:49,005 [ActiveMQ Transport:
> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> activemq.transport.WireFormatNegotiator  -
> tcp://localhost/127.0.0.1:61616@43697 before negotiation:
> OpenWireFormat{version=9, cacheEnabled=false, stackTraceEnabled=false,
> tightEncodingEnabled=false, sizePrefixDisabled=false,
> maxFrameSize=9223372036854775807}
> 2015-07-14 14:27:49,005 [ActiveMQ Transport:
> tcp://localhost/127.0.0.1:61616@43697] DEBUG
> activemq.transport.WireFormatNegotiator  -
> tcp://localhost/127.0.0.1:61616@43697 after negotiation:
> OpenWireFormat{version=9, cacheEnabled=true, stackTraceEnabled=true,
> tightEncodingEnabled=true, sizePrefixDisabled=false,
> maxFrameSize=9223372036854775807}
>
> So the server seems to be completely ignoring my specified settings of :
>     transport.useInactivityMonitor=false; maxInactivityDuration=0;
>
> I guess ActiveMQ 5.7.0.x is incapable of disabling its InactivityMonitor ?
> Can anyone confirm or deny this ?
>
> Thanks & Regards,
> Jason
>
> On 14/07/2015, Jason Vas Dias <ja...@gmail.com> wrote:
> > Good day -
> >
> > I have an ActiveMQ 5.7.0.fuse-71-047 server setup with this in its
> > at-broker-context.xml
> > (main configuration file) :
> >
> >  <transportConnectors>
> >     <transportConnector
> >
> uri="tcp://localhost:${my_apps_broker_port_property}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
> >   </transportConnectors>
> >
> > Yet still  when clients connect to the broker, they end up using a
> > non-zero timeout :
> > 2015-07-14 13:48:27,563 [ActiveMQ InactivityMonitor Worker] WARN
> > broker.TransportConnection.Transport  - Transport Connection to:
> > tcp://127.0.0.1:43475 failed:
> > org.apache.activemq.transport.InactivityIOException: Channel was
> > inactive for too (>30000) long: tcp://127.0.0.1:43475
> >
> > Unfortunately, I cannot set any ActiveMQ specific connection
> > properties on the client side,
> > as the clients are using the plain JMS library (javax:jms:1.1-SP1) to
> > get a connection.
> >
> > But the ActiveMQ documentation suggests that if the server has disabled
> the
> > InactivityMonitor, then clients should be unable to negotiate a
> > non-zero timeout :
> >
> > http://activemq.apache.org/activemq-inactivitymonitor.html says:
> > <quote>
> > ...
> > transport.useInactivityMonitor  true    A value of false disables the
> > InactivityMonitor completely and connections will never time out. By
> > default it is enabled.
> > ...
> > At startup the InactivityMonitor negotiates the appropriate
> > maxInactivityDuration and maxInactivityDurationInitalDelay. The
> > shortest duration is taken for the connection.
> > ...
> > Setting transport.useInactivityMonitor=false will disable the
> > InactivityMonitor. Configuring wireFormat.maxInactivityDuration=0 will
> > achieve the same result.
> > </quote>
> >
> > None of the statements made in the documentation appear to be true in my
> > case.
> >
> > I am now looking at producing a patched version of
> > ActiveMQ-5.7.0.fuse-71-047 that completely removes and disables the
> > InactivityMonitor because of this issue.
> >
> > Would anyone have any suggestions as to how the InactivityMonitor
> > might be disabled
> > in the SERVER configuration with ActiveMQ 5.7.0 ?  Changing ActiveMQ
> > version
> > is not an option.
> >
> > Thanks & Regards,
> > Jason
> >
>

Re: how to disable InactivityMonitor with ActiveMQ 5.7.0.fuse-71-047 ?

Posted by Jason Vas Dias <ja...@gmail.com>.
Here's some debug output showing the timeout negotiation from the client:

2015-07-14 14:27:48,969 [main] DEBUG
activemq.transport.WireFormatNegotiator  - Sending: WireFormatInfo {
version=9, properties={MaxFrameSize=9223372036854775807,
CacheSize=1024, CacheEnabled=true, SizePrefixDisabled=false,
MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
MaxInactivityDuration=30000, TightEncodingEnabled=true,
StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]}
2015-07-14 14:27:49,004 [ActiveMQ Transport:
tcp://localhost/127.0.0.1:61616@43697] DEBUG
activemq.transport.InactivityMonitor  - Using min of local:
WireFormatInfo { version=9,
properties={MaxFrameSize=9223372036854775807, CacheSize=1024,
CacheEnabled=true, SizePrefixDisabled=false,
MaxInactivityDurationInitalDelay=10000, TcpNoDelayEnabled=true,
MaxInactivityDuration=30000, TightEncodingEnabled=true,
StackTraceEnabled=true}, magic=[A,c,t,i,v,e,M,Q]} and remote:
WireFormatInfo { version=9, properties={CacheSize=1024,
MaxFrameSize=9223372036854775807, CacheEnabled=true,
SizePrefixDisabled=false, TcpNoDelayEnabled=true,
MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
TightEncodingEnabled=true, StackTraceEnabled=true},
magic=[A,c,t,i,v,e,M,Q]}
2015-07-14 14:27:49,004 [ActiveMQ Transport:
tcp://localhost/127.0.0.1:61616@43697] DEBUG
activemq.transport.WireFormatNegotiator  - Received WireFormat:
WireFormatInfo { version=9, properties={CacheSize=1024,
MaxFrameSize=9223372036854775807, CacheEnabled=true,
SizePrefixDisabled=false, TcpNoDelayEnabled=true,
MaxInactivityDurationInitalDelay=10000, MaxInactivityDuration=30000,
TightEncodingEnabled=true, StackTraceEnabled=true},
magic=[A,c,t,i,v,e,M,Q]}
2015-07-14 14:27:49,005 [ActiveMQ Transport:
tcp://localhost/127.0.0.1:61616@43697] DEBUG
activemq.transport.WireFormatNegotiator  -
tcp://localhost/127.0.0.1:61616@43697 before negotiation:
OpenWireFormat{version=9, cacheEnabled=false, stackTraceEnabled=false,
tightEncodingEnabled=false, sizePrefixDisabled=false,
maxFrameSize=9223372036854775807}
2015-07-14 14:27:49,005 [ActiveMQ Transport:
tcp://localhost/127.0.0.1:61616@43697] DEBUG
activemq.transport.WireFormatNegotiator  -
tcp://localhost/127.0.0.1:61616@43697 after negotiation:
OpenWireFormat{version=9, cacheEnabled=true, stackTraceEnabled=true,
tightEncodingEnabled=true, sizePrefixDisabled=false,
maxFrameSize=9223372036854775807}

So the server seems to be completely ignoring my specified settings of :
    transport.useInactivityMonitor=false; maxInactivityDuration=0;

I guess ActiveMQ 5.7.0.x is incapable of disabling its InactivityMonitor ?
Can anyone confirm or deny this ?

Thanks & Regards,
Jason

On 14/07/2015, Jason Vas Dias <ja...@gmail.com> wrote:
> Good day -
>
> I have an ActiveMQ 5.7.0.fuse-71-047 server setup with this in its
> at-broker-context.xml
> (main configuration file) :
>
>  <transportConnectors>
>     <transportConnector
> uri="tcp://localhost:${my_apps_broker_port_property}?jms.prefetchPolicy.all=1;transport.useInactivityMonitor=false;wireFormat.maxInactivityDuration=0;"/>
>   </transportConnectors>
>
> Yet still  when clients connect to the broker, they end up using a
> non-zero timeout :
> 2015-07-14 13:48:27,563 [ActiveMQ InactivityMonitor Worker] WARN
> broker.TransportConnection.Transport  - Transport Connection to:
> tcp://127.0.0.1:43475 failed:
> org.apache.activemq.transport.InactivityIOException: Channel was
> inactive for too (>30000) long: tcp://127.0.0.1:43475
>
> Unfortunately, I cannot set any ActiveMQ specific connection
> properties on the client side,
> as the clients are using the plain JMS library (javax:jms:1.1-SP1) to
> get a connection.
>
> But the ActiveMQ documentation suggests that if the server has disabled the
> InactivityMonitor, then clients should be unable to negotiate a
> non-zero timeout :
>
> http://activemq.apache.org/activemq-inactivitymonitor.html says:
> <quote>
> ...
> transport.useInactivityMonitor  true    A value of false disables the
> InactivityMonitor completely and connections will never time out. By
> default it is enabled.
> ...
> At startup the InactivityMonitor negotiates the appropriate
> maxInactivityDuration and maxInactivityDurationInitalDelay. The
> shortest duration is taken for the connection.
> ...
> Setting transport.useInactivityMonitor=false will disable the
> InactivityMonitor. Configuring wireFormat.maxInactivityDuration=0 will
> achieve the same result.
> </quote>
>
> None of the statements made in the documentation appear to be true in my
> case.
>
> I am now looking at producing a patched version of
> ActiveMQ-5.7.0.fuse-71-047 that completely removes and disables the
> InactivityMonitor because of this issue.
>
> Would anyone have any suggestions as to how the InactivityMonitor
> might be disabled
> in the SERVER configuration with ActiveMQ 5.7.0 ?  Changing ActiveMQ
> version
> is not an option.
>
> Thanks & Regards,
> Jason
>