1 Reply Latest reply on Sep 18, 2003 6:45 PM by Adrian Brock

    DLQ & Transactions

    Ted Slusser Newbie

      Hello,

      I have XA connection factories defined for the DefaultJMSProvider. When the message fails up to the retry limit it tries to send to DLQ. But in DLQHandler it always calls createSession(false, ..). This causes my jms sdk to throw an exception because it cannot use non-transacted sessions with a transacted connection factory. (Incidentally, this causes an infinite loop problem)

      Is it possible to configue a different JMSProvider for the DLQHandler? Or in other words I want my regular messages to use the XAConnectionFactory but I want my DLQ to use Non-xa ConnectionFactory.

      -Or-

      Please change DLQHandler so that it detects whether you are using an XAConnection or Non-xa Connection and creates the session accordingly.

      Thanks,
      Ted

        • 1. Re: DLQ & Transactions
          Adrian Brock Master

          So there are three problems.

          1) Your JMS implementation does not implement the
          optional XAConnection.create(boolean, int) method.

          Probably out of your control?

          2) There is no way to specify a non-xa connection factory
          for the DLQ in the JMSProviderAdapter if you are using
          an XA factory for delivery.

          This could be added, I don't like the JMSProviderAdapter.
          It should be factory of objects rather than a list
          of jndi names.

          3) You cannot replace the DLQ implementation

          Add an extra parameter to the DLQ config giving the jndi
          name of the connection factory to use that overrides
          the JMSProviderAdapter when present.

          You should also be to replace the DLQ handler (it is
          hard todo at the moment).

          Option 3 is probably the cleanest solution?

          Regards,
          Adrian