Transactional messaging refers to the coupling of several related messages into a single transaction. Sending messages as part of a transaction ensures that the messages are delivered in order, delivered only once, and successfully retrieved from their destination queue.
If a queue is transactional, it accepts only messages that are sent as part of a transaction. However, a non-transactional message can be sent or received from a local transaction queue without explicitly using transactional Begin, Commit, and Abort syntax. If a non-transactional message is sent to a transactional queue, this component creates a single-message transaction for it, except in the case of referencing a queue on a remote computer using a direct format name. In this situation, if you do not specify a transaction context when sending a message, one is not created for you and the message will be sent to the dead-letter queue.
If you send a non-transactional message to a transactional queue, you will not be able to roll back the message in the event of an exception.