Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
SendFailedMessageForRetryListener example
class
SendFailedMessageForRetryListenerTest
extends
TestCase
{
public
function
testNoRetryStrategyCausesNoRetry
(
)
{
$senderLocator
=
$this
->
createMock
(
ContainerInterface::
class
)
;
$senderLocator
->
expects
(
$this
->
never
(
)
)
->
method
(
'has'
)
;
$senderLocator
->
expects
(
$this
->
never
(
)
)
->
method
(
'get'
)
;
$retryStrategyLocator
=
$this
->
createMock
(
ContainerInterface::
class
)
;
$retryStrategyLocator
->
expects
(
$this
->
once
(
)
)
->
method
(
'has'
)
->
willReturn
(
false
)
;
$listener
=
new
SendFailedMessageForRetryListener
(
$senderLocator
,
$retryStrategyLocator
)
;
$exception
=
new
\
Exception
(
'no!'
)
;
$envelope
=
new
Envelope
(
new
\
stdClass
(
)
)
;
$event
=
new
WorkerMessageFailedEvent
(
$envelope
, 'my_receiver',
$exception
)
;
$listener
->
onMessageFailed
(
$event
)
;
}
public
function
testRecoverableStrategyCausesRetry
(
)
{
$sender
=
$this
->
createMock
(
SenderInterface::
class
)
;
]
,
]
)
;
$dispatcher
=
new
EventDispatcher
(
)
;
$bus
=
new
MessageBus
(
[
new
FailedMessageProcessingMiddleware
(
)
,
new
SendMessageMiddleware
(
$senderLocator
)
,
new
HandleMessageMiddleware
(
$handlerLocator
)
,
]
)
;
$dispatcher
->
addSubscriber
(
new
AddErrorDetailsStampListener
(
)
)
;
$dispatcher
->
addSubscriber
(
new
SendFailedMessageForRetryListener
(
$locator
,
$retryStrategyLocator
)
)
;
$dispatcher
->
addSubscriber
(
new
SendFailedMessageToFailureTransportListener
(
$sendersLocatorFailureTransport
)
)
;
$dispatcher
->
addSubscriber
(
new
StopWorkerOnMessageLimitListener
(
1
)
)
;
$runWorker
=
function
Dstring
$transportName
)
use
(
$transports
,
$bus
,
$dispatcher
)
: ?\Throwable
{
$throwable
= null;
$failedListener
=
function
DWorkerMessageFailedEvent
$event
)
use
(
&
$throwable
)
{
$throwable
=
$event
->
getThrowable
(
)
;
}
;
$dispatcher
->
addListener
(
WorkerMessageFailedEvent::
class
,
$failedListener
)
;