cancel
Showing results for 
Search instead for 
Did you mean: 

Dynamic Configuration JMS

Former Member
0 Kudos

Hi,

i am trying to use dynamic configuration variable DCJMSMessageQueue as a condition for determining the receiver within the Receiver Determiniation. I can see the value in the DCJMSMessageQueue, but the condition is not applied.

Have anyone tried to use this variable within the Receiver Determination (SP14)?

Thnx in advance.

Regards, Erik Hubers

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Erik,

In one of our interface we are using Payload variable(Like /Header/RecType = 2) to route the message in Receiver determination and it is working fine. we are on SP14.

Regards,

Ananth

Former Member
0 Kudos

Hi Ananth,

the variable i am relating to is a context object which can be selected at the JMS-adapter specific parameters as of SP14. I can see the value of the context object in the DynamicConfiguration section of the SOAP header, but it seems that i can't for routing. Which is strange because you can select the context object for the condition...

Have somebody used context objects for routing?

Regards Erik.

Former Member
0 Kudos

Hi Erik,

First make sure that you have seperate conditions for each receiver.

For ex.

1. /Header/RecType = 2 then BUS_SERVICE_ONE

2. /Header/RecType Not EQ 2 then BUS_SERVICE_TWO

<b>Hint:</b> First add two condition lines before selecting any condition statement .

Use <b>[ ] Icon for Add new condition </b> instead of Insert Line

For testing purpose you can try with the payload variable also.

Good luck.

Regards,

Ananth

Former Member
0 Kudos

Hi Ananth,

tnxs for the reply, but the question is not about using structures of the input message in the xpath-expression, it's about using a Context Object(DCJMSMessageQueue) in the xpath-expression, which can be selected in the expression editor.

As of SP14 Adapter-Specific Message Attributes can be stored in the message header. DCJMSMessageQueue is one of the attributes for the Sender JMS Adapter.

I am trying to use this attribute for routing of messages in the Receiver Determination, but it looks like XI can't read it at Determination time.

Anyone else using Adapter-Specific Message Attributes in Configuration?

Regards Erik

Former Member
0 Kudos

Hi Erik,

I'm using JMS Channels and Adapter-specific attributes quite a lot (in my case it's DCJMSCorrelationID).

So far I never had the requirement to use it in conditions in a Receiver Determination, but I set up

a Receiver Determination to test it and it worked with SP15.

Now what was a little strange is that the expression only worked if I set it up in the following way:

DCJMSMessageQueue = queue:///EVENT_EB5331?targetClient=1

where my queue name is solely EVENT_EB5331 (I'm using WebSphere MQ in native mode).

Maybe that solves your problem (I actually copied this value, because it is the way it is written in the DynamicConfiguration

piece of the XI message).

There is another issue I had with the JMS Adapter Specific Attributes in SP14.

The namespace of the attributes was implemented wrong (at least the one for DCJMSCorreleationID). Instead of

'http://sap.com/xi/XI/System/JMS'

it was just 'JMS'.

Now if the condition is - by any reason - evaluated against the correct namespace (the long one)

this could also be a reason why it is not working.

Check the values in the DynamicConfiguration and have a look at the Trace.

You should find something like this in the R E C E I V E R D E T E R M I N A T I O N part of it:

<Trace level="3" type="T">...call rule engine for Condition %CL_SAI_SWF_RULE_ENGINE.MSG_GET_SYSTEM
(MSG=&_MSG&;SYSFIELD="DCJMSMessageQueue";
SYSNSP="http://sap.com/xi/XI/System/JMS")% = queue:///EVENT_EB5331?targetClient=1</Trace>

  <Trace level="2" type="T">......attachment XI_Context not found</Trace>

  <Trace level="3" type="T">......extracting from attachment: DCJMSMessageQueue = 
queue:///EVENT_EB5331?targetClient=1</Trace> 
  <Trace level="2" type="T">......extracting values found: 1</Trace>

Compare the namespaces there with the one in the DynamicConfiguration.

If there is a mismatch upgrade to SP15 or open an OSS Message.

I hope that helps...

regards,

Peter

Former Member
0 Kudos

Hi Peter,

tnxs for your reply and yes there is a mismatch in the namespaces. I have also tried to use JMS as namespace, but it is evaluated against the long one.

The queue-name i used was the same as in the DynamicConfiguration piece. So that's not the problem.

I opened an OSS-call for the mismatch in the namespaces.

Regards Erik

Former Member
0 Kudos

Hi Erik,

Could you pls check this...

In sxmb_moni for this message under payload..there is an entry for XI_Context(text/xml) - in addition to MainDocument - and it has an entry for DCJMSMessageQueue in it...

basically this is where it would be looking for the condition checking...

Adding more pls check the last reply in the following thread...

the namespace there is just "JMS" where as the Condition editor it is "http://sap.com/xi/XI/System/JMS"...so that might be another problem...

this might be a bug and you have done the right thing in opening the OSS message...Also the SP16 should be getting released soon(maybe it is already fixed in that or SP15)...

Thanks,

Renjith.

Former Member
0 Kudos

Yes it is fixed with SP15...

regards,

Peter