List of usage examples for com.rabbitmq.client ShutdownSignalException ShutdownSignalException
public ShutdownSignalException(boolean hardError, boolean initiatedByApplication, Method reason, Object ref)
From source file:de.htwk_leipzig.bis.connection.handshake.clientRewrite.Copyright.java
License:Mozilla Public License
private ShutdownSignalException startShutdown(Method reason, boolean initiatedByApplication, Throwable cause, boolean notifyRpc) { ShutdownSignalException sse = new ShutdownSignalException(true, initiatedByApplication, reason, this); sse.initCause(cause);// w ww . j a v a 2s . c o m if (!setShutdownCauseIfOpen(sse)) { if (initiatedByApplication) throw new AlreadyClosedException(getCloseReason(), cause); } // stop any heartbeating _heartbeatSender.shutdown(); _channel0.processShutdownSignal(sse, !initiatedByApplication, notifyRpc); return sse; }
From source file:de.htwk_leipzig.bis.connection.handshake.clientRewrite.Copyright.java
License:Mozilla Public License
/** * Protected API - Close this connection with the given code, message, * source and timeout value for all the close operations to complete. * Specifies if any encountered exceptions should be ignored. *//*from w ww. j ava 2 s . c om*/ public void close(int closeCode, String closeMessage, boolean initiatedByApplication, Throwable cause, int timeout, boolean abort) throws IOException { boolean sync = !(Thread.currentThread() == mainLoopThread); try { AMQP.Connection.Close reason = new AMQP.Connection.Close.Builder().replyCode(closeCode) .replyText(closeMessage).build(); final ShutdownSignalException sse = startShutdown(reason, initiatedByApplication, cause, true); if (sync) { /* * Do custom action */ mHandshakeAction.doAction(); BlockingRpcContinuation<AMQCommand> k = new BlockingRpcContinuation<AMQCommand>() { @Override public AMQCommand transformReply(AMQCommand command) { AMQConnection.this.finishShutdown(sse); return command; } }; _channel0.quiescingRpc(reason, k); /* * Do custom action */ mHandshakeAction.doAction(); k.getReply(timeout); } else { _channel0.quiescingTransmit(reason); } } catch (TimeoutException tte) { if (!abort) { ShutdownSignalException sse = new ShutdownSignalException(true, true, null, this); sse.initCause(cause); throw sse; } } catch (ShutdownSignalException sse) { if (!abort) throw sse; } catch (IOException ioe) { if (!abort) throw ioe; } finally { if (sync) _frameHandler.close(); } }
From source file:dk.au.cs.karibu.integration.TestMessageReceiverEndpoint.java
License:Apache License
/** Test the receiver end point in case connection problems occur. */ @Test//from w ww . java 2s . co m public void shouldTestFailoverWhenMQFails() throws InterruptedException, IOException { receiverThread.start(); // this should succeed crh.send(p1, EXAMPLE_TOPIC); // wait for the threads to settle (so the consumer thread has pulled // the message from the queue). Thread.sleep(100); // Validate that the consumer has indeed looked up the deserializer assertEquals("INFO:Caching the deserializer (GameFavoriteDeserializer)", spyLogger.getLastLog()); // Validate that the storage has stored the item BasicDBObject dbo = storage.getCollectionNamed(PRODUCER_CODE).get(0); assertNotNull(dbo); // tell the polling consumer to throw an exception on the next call to a fecth from the queue. pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); // this should succeed but the log must show a reconnect was initiated crh.send(p2, EXAMPLE_TOPIC); Thread.sleep(100); // dumpFullLog(); // assert that a reconnect was made assertEquals("INFO:MQ shutdown signal, will backoff for 2ms and retry (Retry #1)", spyLogger.getLastLog(2)); assertEquals("INFO:OpenChannel called/Count = 1", spyLogger.getLastLog()); dbo = storage.getCollectionNamed(PRODUCER_CODE).get(1); assertNotNull(dbo); assertEquals("Mathilde", dbo.getString("name")); // dumpFullLog(); pollingConsumer.closeChannel(); assertEquals(0, pollingConsumer.getOpenCloseCount()); }
From source file:dk.au.cs.karibu.integration.TestMessageReceiverEndpoint.java
License:Apache License
/** Test exponential backup in case of MQ failure. */ @Test//from www.j a va 2 s . co m public void shouldTestExpBackoffWhenMQFails() throws InterruptedException, IOException { receiverThread.start(); // 'warm up' the receiver so the deserializer has been cached. crh.send(p2, EXAMPLE_TOPIC); Thread.sleep(100); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); // this should succeed, but the log must contain the full log exponential backup crh.send(p1, EXAMPLE_TOPIC); Thread.sleep(100); //dumpFullLog(); // Assert that the object was stored (as item #1, #0 is Mathilde) BasicDBObject dbo = storage.getCollectionNamed(PRODUCER_CODE).get(1); assertNotNull(dbo); assertEquals("Henrik", dbo.getString("name")); // Assert from the log that exponential backup was made during the reconnect tries assertEquals("INFO:MQ shutdown signal, will backoff for 2ms and retry (Retry #1)", spyLogger.getLastLog(4)); assertEquals("INFO:MQ shutdown signal, will backoff for 4ms and retry (Retry #2)", spyLogger.getLastLog(2)); assertEquals("INFO:OpenChannel called/Count = 1", spyLogger.getLastLog()); // Next, ensure that the exp backoff counter is reset after a successful send, AND the // dublication of timing pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); // this should succeed, but the log must contain the full log exponential backup crh.send(p1, EXAMPLE_TOPIC); Thread.sleep(100); // Assert from the log that exponential backup was made during the five reconnect tries assertEquals("INFO:MQ shutdown signal, will backoff for 8ms and retry (Retry #3)", spyLogger.getLastLog(2)); assertEquals("INFO:OpenChannel called/Count = 1", spyLogger.getLastLog()); //dumpFullLog(); }
From source file:dk.au.cs.karibu.integration.TestMessageReceiverEndpoint.java
License:Apache License
@Test public void shouldTestExpBackoffCapingAfter10RetriesWhenMQFails() throws InterruptedException, IOException { receiverThread.start();/*w w w. j a v a2s.c o m*/ // 'warm up' the receiver so the deserializer has been cached. crh.send(p2, EXAMPLE_TOPIC); Thread.sleep(100); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); pollingConsumer.pushExceptionToBeThrownNext(new ShutdownSignalException(false, true, null, null)); crh.send(p1, EXAMPLE_TOPIC); Thread.sleep(4500); // dumpFullLog(); // Assert from the log that the exp backoff stops after 10 retries. assertEquals("INFO:MQ shutdown signal, will backoff for 1024ms and retry (Retry #10)", spyLogger.getLastLog(4)); assertEquals("INFO:MQ shutdown signal, will backoff for 1024ms and retry (Retry #11)", spyLogger.getLastLog(2)); }
From source file:dk.au.cs.karibu.integration.TestProducerFailover.java
License:Apache License
@Before public void setup() throws IOException { // create a spy into the logging so we can validate what goes on // in the client request handler spyLogger = new SpyLogger(); // create the depended-on objects in fake object implementations // for the server side to allow inspection. storage = new FakeObjectStorage(); DeserializerFactory factory = new DeserializerFactory() { @Override/*from w w w . jav a2 s.co m*/ public Deserializer createDeserializer(String producerCode) { return new GameFavoriteDeserializer(); } }; srh = new StandardServerRequestHandler(storage, factory); asStubConnector = new InVMInterProcessConnector(srh); connector = asStubConnector; crh = new StandardClientRequestHandler<GameFavorite>(PRODUCER_CODE, connector, new GameFavoriteSerializer(), 0, 5, spyLogger); p1 = new GameFavorite("Henrik", "SCII"); p2 = new GameFavorite("Bimse", "Bimses julerejse"); sse = new ShutdownSignalException(false, true, null, null); }
From source file:dk.au.cs.karibu.integration.TestProducerFailover.java
License:Apache License
@Test public void shouldResendWhenMultipleAlreadyClosedExcpetionsOccurs() throws IOException { // Assert multiple exceptions are handled, by pushing the last exception first (stack behaviour) ShutdownSignalException sse1 = new ShutdownSignalException(false, true, null, null); ShutdownSignalException sse2 = new ShutdownSignalException(false, true, null, null); asStubConnector.pushExceptionToBeThrownAtNextSend(new AlreadyClosedException(sse1)); asStubConnector.pushExceptionToBeThrownAtNextSend(new AlreadyClosedException(sse2)); crh.send(p1, EXAMPLE_TOPIC);/*ww w . j a v a 2 s . co m*/ assertEquals( "INFO:AlreadyClosedException/retry=2/Msg=channel is already closed due to clean channel shutdown", spyLogger.getLastLog()); // and verify that the message indeed got through assertEquals("Henrik", storage.getCollectionNamed(PRODUCER_CODE).get(0).getString("name")); }
From source file:org.smartdeveloperhub.curator.connector.BrokerControllerTest.java
License:Apache License
@Test public void testPublishMessage$unexpectedFailure() throws Exception { final BrokerController sut = newInstance(); final DeliveryChannel dc = ProtocolFactory.newDeliveryChannel().withExchangeName("exchangeName") .withRoutingKey("routingKey").build(); final String message = "message"; new MockUp<ConnectionFactory>() { @Mock/* w w w . j av a 2 s . co m*/ public void setHost(final String host) { } @Mock public void setPort(final int port) { } @Mock public void setVirtualHost(final String virtualHost) { } @Mock public void setThreadFactory(final ThreadFactory threadFactory) { } @Mock public Connection newConnection() throws IOException, TimeoutException { return BrokerControllerTest.this.connection; } }; new Expectations() { { BrokerControllerTest.this.connection.createChannel(); this.result = BrokerControllerTest.this.channel; BrokerControllerTest.this.channel.basicPublish(dc.exchangeName(), dc.routingKey(), true, (BasicProperties) this.any, message.getBytes()); this.result = new ShutdownSignalException(true, true, null, BrokerControllerTest.this.channel); } }; sut.connect(); try { sut.publishMessage(dc, message); } catch (final IOException e) { assertThat(e.getMessage(), equalTo( "Unexpected failure while publishing message [message] to exchange 'exchangeName' and routing key 'routingKey' using broker localhost:5672/: clean connection shutdown")); assertThat(e.getCause(), instanceOf(ShutdownSignalException.class)); } new Verifications() { { BasicProperties s; BrokerControllerTest.this.channel.basicPublish(dc.exchangeName(), dc.routingKey(), true, s = withCapture(), message.getBytes()); assertThat(s.getDeliveryMode(), equalTo(2)); assertThat(s.getHeaders().get(BrokerController.BROKER_CONTROLLER_MESSAGE), instanceOf(Long.class)); } }; }
From source file:org.springframework.amqp.rabbit.transaction.RabbitExceptionTranslatorTests.java
License:Apache License
@Test public void testConvertRabbitAccessException() { assertThat(//w w w .j av a2 s. c o m RabbitExceptionTranslator.convertRabbitAccessException( new PossibleAuthenticationFailureException(new RuntimeException())), instanceOf(AmqpAuthenticationException.class)); assertThat(RabbitExceptionTranslator.convertRabbitAccessException(new AmqpException("")), instanceOf(AmqpException.class)); assertThat( RabbitExceptionTranslator .convertRabbitAccessException(new ShutdownSignalException(false, false, null, null)), instanceOf(AmqpConnectException.class)); assertThat(RabbitExceptionTranslator.convertRabbitAccessException(new ConnectException()), instanceOf(AmqpConnectException.class)); assertThat(RabbitExceptionTranslator.convertRabbitAccessException(new IOException()), instanceOf(AmqpIOException.class)); assertThat(RabbitExceptionTranslator.convertRabbitAccessException(new UnsupportedEncodingException()), instanceOf(AmqpUnsupportedEncodingException.class)); assertThat(RabbitExceptionTranslator.convertRabbitAccessException(new Exception() { private static final long serialVersionUID = 1L; }), instanceOf(UncategorizedAmqpException.class)); }
From source file:pl.nask.hsn2.DataStoreActiveCleanerTest.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unused" }) private void mockObjects() throws Exception { connCloseRequested = false;/*w w w . j ava 2 s.c o m*/ new NonStrictExpectations() { @Mocked ConnectionFactory cf; { // Create new connection. cf.newConnection(); result = c; // Create channel. c.createChannel(); result = ch; // Close connection. c.close(); forEachInvocation = new Object() { void validate() { connCloseRequested = true; } }; // Declare exchange. ch.exchangeDeclare(anyString, anyString); // Declare queue. ch.queueDeclare(); result = dok; // Get queue name. dok.getQueue(); consumer.nextDelivery(); result = new Delegate() { public Delivery nextDelivery() throws Exception { Thread.sleep(100); Delivery d = null; Envelope envelope; BasicProperties properties; JobFinished jf; byte[] body; switch (nextAction) { case TASK_ACCEPTED: d = taskAcceptedMsg(); nextAction = CleaningActions.REMOVE_JOB_1; break; case REMOVE_JOB_1: d = removeJobFinished(1, JobStatus.COMPLETED); nextAction = CleaningActions.REMOVE_JOB_2; break; case REMOVE_JOB_2: d = removeJobFinishedReminder(2); nextAction = CleaningActions.CANCEL; break; case REMOVE_JOB_3: d = removeJobFinished(3, JobStatus.COMPLETED); nextAction = CleaningActions.REMOVE_JOB_3_AGAIN; break; case REMOVE_JOB_3_AGAIN: d = removeJobFinished(3, JobStatus.COMPLETED); nextAction = CleaningActions.CANCEL; break; case REMOVE_JOB_4: d = removeJobFinished(4, JobStatus.COMPLETED); nextAction = CleaningActions.CANCEL; break; case REMOVE_JOB_5: d = removeJobFinished(5, JobStatus.FAILED); nextAction = CleaningActions.CANCEL; break; case NEVER_RETURN: while (true) { LOGGER.debug("Never return..."); Thread.sleep(10000); } case CANCEL: throw new ConsumerCancelledException(); case INTERRUPT: throw new InterruptedException("Test interruption"); case SHUTDOWN: throw new ShutdownSignalException(false, false, null, null); case IO_EXCEPTION: throw new IOException("Test I/O exception"); } return d; } private Delivery taskAcceptedMsg() { Delivery d; Envelope envelope; BasicProperties properties; JobFinished jf; byte[] body; envelope = new Envelope(1, false, "", ""); properties = new BasicProperties.Builder().type("TaskAccepted").build(); body = new byte[] { 1 }; d = new Delivery(envelope, properties, body); return d; } private Delivery removeJobFinished(long jobId, JobStatus status) { Delivery d; Envelope envelope; BasicProperties properties; JobFinished jf; byte[] body; envelope = new Envelope(1, false, "", ""); properties = new BasicProperties.Builder().type("JobFinished").build(); jf = JobFinished.newBuilder().setJob(jobId).setStatus(status).build(); body = jf.toByteArray(); d = new Delivery(envelope, properties, body); return d; } private Delivery removeJobFinishedReminder(long jobId) { Delivery d; Envelope envelope; BasicProperties properties; byte[] body; envelope = new Envelope(1, false, "", ""); properties = new BasicProperties.Builder().type("JobFinishedReminder").build(); JobFinishedReminder jfr = JobFinishedReminder.newBuilder().setJob(jobId) .setStatus(JobStatus.COMPLETED).build(); body = jfr.toByteArray(); d = new Delivery(envelope, properties, body); return d; } }; } }; }