0
私はウサギを使ってお互いに通信する2つのアプリケーションを持っています。ウサギの返信でオブジェクトをJsonに変換するにはどうすればよいですか?
私は今、私はこのエラーが発生します、(APP2に)リスナーに(APP1から)オブジェクトを送信し、(リスナーに)いくつかの工程の後に、それは別のオブジェクトを私に答える必要があり: ClassNotFound
I両方のアプリケーションにウサギのために、この設定を使用しています:
@Configuration
public class RabbitConfiguration {
public final static String EXCHANGE_NAME = "paymentExchange";
public final static String EVENT_ROUTING_KEY = "eventRoute";
public final static String PAYEMNT_ROUTING_KEY = "paymentRoute";
public final static String QUEUE_EVENT = EXCHANGE_NAME + "." + "event";
public final static String QUEUE_PAYMENT = EXCHANGE_NAME + "." + "payment";
public final static String QUEUE_CAPTURE = EXCHANGE_NAME + "." + "capture";
@Bean
public List<Declarable> ds() {
return queues(QUEUE_EVENT, QUEUE_PAYMENT);
}
@Autowired
private ConnectionFactory rabbitConnectionFactory;
@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(rabbitConnectionFactory);
}
@Bean
public DirectExchange exchange() {
return new DirectExchange(EXCHANGE_NAME);
}
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate r = new RabbitTemplate(rabbitConnectionFactory);
r.setExchange(EXCHANGE_NAME);
r.setChannelTransacted(false);
r.setConnectionFactory(rabbitConnectionFactory);
r.setMessageConverter(jsonMessageConverter());
return r;
}
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
private List<Declarable> queues(String... nomes) {
List<Declarable> result = new ArrayList<>();
for (int i = 0; i < nomes.length; i++) {
result.add(newQueue(nomes[i]));
if (nomes[i].equals(QUEUE_EVENT))
result.add(makeBindingToQueue(nomes[i], EVENT_ROUTING_KEY));
else
result.add(makeBindingToQueue(nomes[i], PAYEMNT_ROUTING_KEY));
}
return result;
}
private static Binding makeBindingToQueue(String queueName, String route) {
return new Binding(queueName, DestinationType.QUEUE, EXCHANGE_NAME, route, null);
}
private static Queue newQueue(String nome) {
return new Queue(nome);
}
}
は、私はこれを使用してメッセージ送信:
String response = (String) rabbitTemplate.convertSendAndReceive(RabbitConfiguration.EXCHANGE_NAME,
RabbitConfiguration.PAYEMNT_ROUTING_KEY, domainEvent);
をと待ちますオブジェクトへのキャストを使用した応答。
この通信は、同じウサギサーバーを使用する2つの異なるアプリケーション間で行われます。
どうすればこの問題を解決できますか?
私はウサギが送信操作でjsonにメッセージを変換し、返信で同じことを期待していましたので、返信のjsonに対応するオブジェクトを作成しました。
これはリスナーのための私の設定です: '@Bean 公共SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(){ SimpleRabbitListenerContainerFactory工場=新しいSimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(rabbitConnectionFactory); factory.setMessageConverter(jsonMessageConverter()); リターン・ファクトリー; } ' –