@Override protected void configure() { final Named connectionNamed; final AmqpConfig amqpConfig; connectionNamed = Names.named(connectionName); bind(new TypeLiteral<PublisherCallback<Object>>() {}).annotatedWith(JsonMapper.class).to(JsonPublisherCallback.class).in(Scopes.SINGLETON); bind(new TypeLiteral<PublisherCallback<String>>() {}).to(StringPublisherCallback.class).in(Scopes.SINGLETON); amqpConfig = config.getBean(AmqpConfig.class, ImmutableMap.of("name", connectionName)); bind(AmqpConfig.class).annotatedWith(connectionNamed).toInstance(amqpConfig); if (amqpConfig.isEnabled()) { LOG.info("Enabling AMQP for '%s'", connectionName); bind(ConnectionFactory.class).annotatedWith(connectionNamed).toProvider(new AmqpFactoryProvider(amqpConfig)).in(Scopes.SINGLETON); bind(AmqpRunnableFactory.class).annotatedWith(connectionNamed).toInstance(new AmqpRunnableFactory(connectionNamed)); } else { LOG.info("Disabled AMQP for '%s'", connectionName); } }