-
Task
-
Resolution: Obsolete
-
Minor
-
None
-
JBoss A-MQ 6.3.x
-
None
When utilizing the AMQP.Net Lite client and creating a ReceiverLink it appears according to the comments in the source that to create a recoverable sub a null Source should be utilized. There has been some discussion recently regarding what the AMQP 1.0 spec says regarding this issue via QPID-7981.
In actual testing against 6.3.0 the behaviour was described as thus:
When recovering a durable subscription (ReceiverLink), the configured source is deteriorated and contains progressively less of the information that was used to create it in the first place.
And looked like this via logging:
'RecoverSelectorIssue.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'RecoverSelectorIssue.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\dev\RedHatRepro\RedHatRepro\RecoverSelectorIssue\RecoverSelectorIssue\bin\Debug\RecoverSelectorIssue.exe'. Symbols loaded. 'RecoverSelectorIssue.exe' (CLR v4.0.30319: RecoverSelectorIssue.exe): Loaded 'C:\dev\RedHatRepro\RedHatRepro\RecoverSelectorIssue\RecoverSelectorIssue\bin\Debug\Amqp.Net.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'RecoverSelectorIssue.exe' (CLR v4.0.30319: RecoverSelectorIssue.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'RecoverSelectorIssue.exe' (CLR v4.0.30319: RecoverSelectorIssue.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'RecoverSelectorIssue.exe' (CLR v4.0.30319: RecoverSelectorIssue.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'RecoverSelectorIssue.exe' (CLR v4.0.30319: RecoverSelectorIssue.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. [09:40:30.206] =====> SEND AMQP 3 1 0 0 [09:40:30.213] =====> SEND sasl-init(mechanism:PLAIN,initial-response:004150505F506F737450726F6300756670,hostname:192.168.2.221) [09:40:30.348] =====> RECV AMQP 3 1 0 0 [09:40:30.361] =====> RECV sasl-mechanisms(sasl-server-mechanisms:[PLAIN,ANONYMOUS]) [09:40:30.584] =====> RECV sasl-outcome(code:0) [09:40:30.592] =====> SEND AMQP 0 1.0.0 [09:40:30.593] =====> SEND (ch=0) open(container-id:client-1) [09:40:30.598] =====> SEND (ch=0) begin(next-outgoing-id:4294967293,incoming-window:2048,outgoing-window:2048,handle-max:4294967295) STEP 1: CREATED DURABLE SUBSCRIBER WITH SELECTOR source(filter:[f1:a='b'],default-outcome:modified(delivery-failed:True,undeliverable-here:False)) [09:40:30.601] =====> RECV AMQP 0 1 0 0 [09:40:30.602] =====> RECV (ch=0) open(container-id:amq,host-name:,max-frame-size:4294967295,channel-max:32767,idle-time-out:15000,offered-capabilities:[ANONYMOUS-RELAY],properties:[platform:Java/1.8.0_121,product:ActiveMQ,version:5.11.0.redhat-630254,topic-prefix:topic://,queue-prefix:queue://]) [09:40:30.604] =====> SEND (ch=0) attach(name:test-subscription,handle:0,role:True,source:source(address:topic://test-topic,durable:2,expiry-policy:never,distribution-mode:copy,filter:[f1:a='b'],default-outcome:modified(delivery-failed:True,undeliverable-here:False)),target:target()) [09:40:30.615] =====> RECV (ch=0) begin(remote-channel:0,next-outgoing-id:1,incoming-window:2147483647,outgoing-window:2147483647,handle-max:65535) [09:40:30.634] =====> SEND (ch=0) end() [09:40:30.768] =====> RECV (ch=0) attach(name:test-subscription,handle:0,role:False,snd-settle-mode:2,rcv-settle-mode:0,source:source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy,filter:[f1:a='b'],default-outcome:modified(delivery-failed:True,undeliverable-here:False)),target:target(),incomplete-unsettled:False,initial-delivery-count:0) [09:40:30.958] =====> RECV (ch=0) end() [09:40:30.962] =====> SEND (ch=0) close() [09:40:30.966] =====> RECV (ch=0) close() [09:40:30.968] =====> SEND AMQP 3 1 0 0 [09:40:30.973] =====> SEND sasl-init(mechanism:PLAIN,initial-response:004150505F506F737450726F6300756670,hostname:192.168.2.221) [09:40:30.981] =====> RECV AMQP 3 1 0 0 [09:40:30.981] =====> RECV sasl-mechanisms(sasl-server-mechanisms:[PLAIN,ANONYMOUS]) [09:40:31.208] =====> RECV sasl-outcome(code:0) [09:40:31.210] =====> SEND AMQP 0 1.0.0 [09:40:31.212] =====> SEND (ch=0) open(container-id:client-1) [09:40:31.212] =====> RECV AMQP 0 1 0 0 [09:40:31.212] =====> SEND (ch=0) begin(next-outgoing-id:4294967293,incoming-window:2048,outgoing-window:2048,handle-max:4294967295) [09:40:31.212] =====> SEND (ch=0) attach(name:test-subscription,handle:0,role:True,target:target()) [09:40:31.216] =====> RECV (ch=0) open(container-id:amq,host-name:,max-frame-size:4294967295,channel-max:32767,idle-time-out:15000,offered-capabilities:[ANONYMOUS-RELAY],properties:[platform:Java/1.8.0_121,product:ActiveMQ,version:5.11.0.redhat-630254,topic-prefix:topic://,queue-prefix:queue://]) [09:40:31.421] =====> RECV (ch=0) begin(remote-channel:0,next-outgoing-id:1,incoming-window:2147483647,outgoing-window:2147483647,handle-max:65535) [09:40:31.427] =====> RECV (ch=0) attach(name:test-subscription,handle:0,role:False,snd-settle-mode:2,rcv-settle-mode:0,source:source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy,filter:[apache.org:selector-filter:string:a='b']),target:target(),incomplete-unsettled:False,initial-delivery-count:0) STEP 2 : RECOVERED DURABLE SUBSCRIBER WITH SELECTOR source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy,filter:[apache.org:selector-filter:string:a='b']) [09:40:31.430] =====> SEND (ch=0) end() [09:40:31.432] =====> RECV (ch=0) end() [09:40:31.432] =====> SEND (ch=0) close() [09:40:31.433] =====> RECV (ch=0) close() [09:40:31.434] =====> SEND AMQP 3 1 0 0 [09:40:31.434] =====> SEND sasl-init(mechanism:PLAIN,initial-response:004150505F506F737450726F6300756670,hostname:192.168.2.221) [09:40:31.443] =====> RECV AMQP 3 1 0 0 [09:40:31.443] =====> RECV sasl-mechanisms(sasl-server-mechanisms:[PLAIN,ANONYMOUS]) [09:40:31.675] =====> RECV sasl-outcome(code:0) [09:40:31.676] =====> SEND AMQP 0 1.0.0 [09:40:31.680] =====> SEND (ch=0) open(container-id:client-1) [09:40:31.680] =====> SEND (ch=0) begin(next-outgoing-id:4294967293,incoming-window:2048,outgoing-window:2048,handle-max:4294967295) [09:40:31.680] =====> RECV AMQP 0 1 0 0 [09:40:31.681] =====> SEND (ch=0) attach(name:test-subscription,handle:0,role:True,target:target()) [09:40:31.682] =====> RECV (ch=0) open(container-id:amq,host-name:,max-frame-size:4294967295,channel-max:32767,idle-time-out:15000,offered-capabilities:[ANONYMOUS-RELAY],properties:[platform:Java/1.8.0_121,product:ActiveMQ,version:5.11.0.redhat-630254,topic-prefix:topic://,queue-prefix:queue://]) [09:40:31.907] =====> RECV (ch=0) begin(remote-channel:0,next-outgoing-id:1,incoming-window:2147483647,outgoing-window:2147483647,handle-max:65535) [09:40:31.908] =====> RECV (ch=0) attach(name:test-subscription,handle:0,role:False,snd-settle-mode:2,rcv-settle-mode:0,source:source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy),target:target(),incomplete-unsettled:False,initial-delivery-count:0) STEP 3 : RECOVERED DURABLE SUBSCRIBER WITH SELECTOR source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy) [09:40:31.908] =====> SEND (ch=0) end() [09:40:31.909] =====> RECV (ch=0) end() [09:40:31.911] =====> SEND (ch=0) close() [09:40:31.913] =====> RECV (ch=0) close() [09:40:31.916] =====> SEND AMQP 3 1 0 0 [09:40:31.916] =====> SEND sasl-init(mechanism:PLAIN,initial-response:004150505F506F737450726F6300756670,hostname:192.168.2.221) [09:40:31.917] =====> RECV AMQP 3 1 0 0 [09:40:31.918] =====> RECV sasl-mechanisms(sasl-server-mechanisms:[PLAIN,ANONYMOUS]) [09:40:32.160] =====> RECV sasl-outcome(code:0) [09:40:32.181] =====> SEND AMQP 0 1.0.0 [09:40:32.184] =====> SEND (ch=0) open(container-id:client-1) [09:40:32.185] =====> SEND (ch=0) begin(next-outgoing-id:4294967293,incoming-window:2048,outgoing-window:2048,handle-max:4294967295) [09:40:32.186] =====> SEND (ch=0) attach(name:test-subscription,handle:0,role:True,target:target()) [09:40:32.186] =====> RECV AMQP 0 1 0 0 [09:40:32.199] =====> RECV (ch=0) open(container-id:amq,host-name:,max-frame-size:4294967295,channel-max:32767,idle-time-out:15000,offered-capabilities:[ANONYMOUS-RELAY],properties:[platform:Java/1.8.0_121,product:ActiveMQ,version:5.11.0.redhat-630254,topic-prefix:topic://,queue-prefix:queue://]) [09:40:32.436] =====> RECV (ch=0) begin(remote-channel:0,next-outgoing-id:1,incoming-window:2147483647,outgoing-window:2147483647,handle-max:65535) [09:40:32.437] =====> RECV (ch=0) attach(name:test-subscription,handle:0,role:False,snd-settle-mode:2,rcv-settle-mode:0,source:source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy),target:target(),incomplete-unsettled:False,initial-delivery-count:0) STEP 4 : RECOVERED DURABLE SUBSCRIBER WITH SELECTOR source(address:topic://test-topic,durable:2,expiry-policy:never,timeout:0,dynamic:False,distribution-mode:copy) [09:40:32.437] =====> SEND (ch=0) end() [09:40:32.439] =====> RECV (ch=0) end() [09:40:32.443] =====> SEND (ch=0) close() [09:40:32.448] =====> RECV (ch=0) close() The program '[2120] RecoverSelectorIssue.exe' has exited with code 0 (0x0).
If however you fully specify the Source each time in the creation of the ReceiverLink it works.
- is documented by
-
ENTMQCL-863 Customer feedback - .NET Client - Instructions on durable subscription creation and recovery
- Closed