因此,我正在使用一个sqs队列使用亚马逊的sqs服务将数据从一项服务传递到另一项服务,从而不会丢失任何数据。我正在使用以下代码异步执行此操作。但是,代码将随机停止侦听消息,直到我重新启动整个服务后才开始备份,我认为线程会随机终止,但我并不乐观。有没有一种方法可以确保队列中始终有一定数量的侦听器,如果没有,那么没有人知道一种更好的方法来侦听不会出现此问题的sqs消息吗?谢谢
public void init() throws JMSException {
connectionFactory = new SQSConnectionFactory(
new ProviderConfiguration(),
AmazonSQSClientBuilder.standard().build());
// Create the connection
connection = connectionFactory.createConnection();
// Create the session
Session session = connection.createSession(false, SQSSession.UNORDERED_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer( session.createQueue(properties.getQueueName()) );
ReceiverCallback callback = new ReceiverCallback(svc);
consumer.setMessageListener( callback );
connection.start();
}
private static class ReceiverCallback implements MessageListener {
Service svc;
public ReceiverCallback(Service svc){
this.svc = svc;
}
@Override
public void onMessage(Message message) {
try {
if(message instanceof TextMessage){
TextMessage txtMessage = (TextMessage) message;
svc.processMessage(txtMessage.getText());
}
message.acknowledge();
} catch (Exception e){
//catch error
}
}
}