public interface MatsTestBrokerInterface
RuntimeException, or the special
MatsRefuseMessageExceptiondue to some internal validation performed. Usage: If employing the Mats test tools, one of these should have been created for you. For the JUnit
Rule_Mats, and JUnit Jupiter
Extension_Mats, there's a getter directly on the rule/extension instance. For Spring, employing the
MatsTestInfrastructureConfiguration, an instance is put into the Spring context for you. If you do not use those tools, you will have to create a instance of this class as a Spring bean yourself - either directly by using the
create(..)methods taking parameters, or indirectly by using the
createForLaterPopulation()variant, and rely on the
SpringJmsMatsFactoryWrapperfinding it from the Spring context and populating it for you.
|Modifier and Type||Interface and Description|
Representation of the Mats message that sat on the DLQ.
|Modifier and Type||Method and Description|
This method is most probably not for you!.
If you have both the JMS ConnectionFactory and a JmsMatsFactory available from start, then you can create a working instance right away.
Special factory variant, where the needed parameters must be supplied by
Waits a couple of seconds for a message to appear on the Dead Letter Queue for the provided endpoint- or stageId (Queue name "DLQ."+matsendpointPrefix+endpointOrStageId) - and also checks the standard common ActiveMQ DLQ (Queue name "ActiveMQ.DLQ") in case the broker is not configured with specific DLQs per Queue, which is relevant if you fire up an unmodified ActiveMQ distribution on the command line, check the
static MatsTestBrokerInterface create(javax.jms.ConnectionFactory connectionFactory, MatsFactory matsFactory)
_latePopulate(ConnectionFactory, MatsFactory). Note that the MatsFactory parameter currently needs to be a
JmsMatsFactory- read more at _latePopulate().
static MatsTestBrokerInterface createForLaterPopulation()
_latePopulate(ConnectionFactory, MatsFactory), which typically will be handled by the
MatsTestBrokerInterface.MatsMessageRepresentation getDlqMessage(java.lang.String endpointOrStageId)
MatsTestBrokerclass JavaDoc for how to use an external MQ instead of the in-VM which otherwise is fired up. (NOTE: It is HIGHLY suggested to use the "specific DLQ" pattern in any production setting, as this is much easier to reason about when ugly things starts hitting fans).
endpointOrStageId- the endpoint which is expected to generate a DLQ message.
MatsTraceof the DLQ'ed message.
MatsTestBrokerInterface _latePopulate(javax.jms.ConnectionFactory connectionFactory, MatsFactory matsFactory)
SpringJmsMatsFactoryWrapper, by reflection invocation when it is both on classpath and as an instance in the Spring context, to perform "late setting" of the properties which the tool needs to perform its job. (Reason for reflection: This class resides in the 'mats-test' project - which is for testing, while the
SpringJmsMatsFactoryWrapperis in the 'mats-spring-jms' project - which is for "production"). The matsFactory parameter currently needs to be a JmsMatsFactory. We need all of the following from it
MatsInterceptable, which JmsMatsFactory is)
MatsSerializerto provide access to contents from messages (from JmsMatsFactory)
MatsFactory.MatsFactoryWrapper, but it must resolve to a
MatsFactory.unwrapFully()! Otherwise, it'll throw an