Хотите опубликовать в очереди сообщений на удаленном компьютере - PullRequest
0 голосов
/ 16 мая 2019

Я хочу опубликовать сообщение pojo из приложения springboot, запущенного в моей локальной сети, в очередь сообщений, находящуюся на одном из удаленных компьютеров, но при этом возникает исключение сбоя аутентификации.Я могу опубликовать этот же объект в очереди сообщений в моей локальной сети.

Я использую Springbatch для чтения, обработки и записи в очередь сообщений.Я использовал AmqpItemWriter и пытался опубликовать в очереди сообщений.Он работал хорошо и опубликовал сообщение в очереди сообщений на моем локальном компьютере.Когда я изменил свойство spring.rabbitmq.host с «localhost» на «xxx.xx.xx.xxx», на удаленной машине возникла исключительная ситуация во время выполнения, сообщающая об ошибке аутентификации.

Ниже приведен мой код Writer, где я имеюЛогика для публикации в очереди сообщений.

@Component
public class Writer extends AmqpItemWriter<CsvWrapperPojo> {

    @Autowired
     @Qualifier("rabbitTemplate")
     private RabbitTemplate rabbitTemplate;

    public Writer(AmqpTemplate rabbitTemplate) {
        super(rabbitTemplate);
        // TODO Auto-generated constructor stub
    }

    /*@Autowired
    private CSVPostProcess csvPostProcess;*/


    @Override
    public void write(final List<? extends CsvWrapperPojo> items) throws Exception {
        // TODO Auto-generated method stub

        for(CsvWrapperPojo item : items){



            for(CSVPojo pojo :item.getGeneralPojoList()){

            rabbitTemplate.convertAndSend("spring-boot-rabbitmq-BulkSolve.async_BulkSolve_Msg", "BulkSolve_GeneralrequestQueue", pojo);
            }
            for(CSVPojo pojoSummary : item.getSummaryPojoList()){
                rabbitTemplate.convertAndSend("spring-boot-rabbitmq-BulkSolve_summary.async_BulkSolve_Msg", "BulkSolve_SummaryrequestQueue", pojoSummary);
            }
        }

    }



}

Ниже application.properties

server.port=9060
spring.rabbitmq.dynamic=true
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.host=xxx.xx.xx.xxx(Remote machine IP)
spring.batch.job.enabled=false

У меня установлен Rabbitmq и такая же очередь доступна и на удаленной машине.Но похоже аутентификация здесь не происходит.Ниже приведена моя трассировка стека исключений.Кто-нибудь может подсказать, что нужно сделать, чтобы опубликовать сообщение на удаленном компьютере.

java.net.SocketException: Socket Closed
        at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_131]
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[na:1.8.0_131]
        at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[na:1.8.0_131]
        at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_131]
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_131]
        at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_131]
        at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288) ~[na:1.8.0_131]
        at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:91) ~[amqp-client-4.0.3.jar!/:4.0.3]
        at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164) ~[amqp-client-4.0.3.jar!/:4.0.3]
        at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:571) ~[amqp-client-4.0.3.jar!/:4.0.3]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

2019-05-16 15:56:41.683 ERROR 696 --- [nio-9060-exec-1] o.s.batch.core.step.AbstractStep         : Encountered an error executing step ETL-CSV in job ETL

org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
        at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:65) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:368) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:573) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1430) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1411) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.core.RabbitTemplate.send(RabbitTemplate.java:712) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:780) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:776) ~[spring-rabbit-1.7.4.RELEASE.jar!/:na]
        at com.comcast.FileProcess.Batch.Writer.write(Writer.java:47) ~[classes!/:0.0.1-SNAPSHOT]
        at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]
        at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:151) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]
        at org.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:274) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]
        at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]
        at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]
        at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:406) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]
        at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:330) ~[spring-batch-core-3.0.8.RELEASE.jar!/:3.0.8.RELEASE]

1 Ответ

2 голосов
/ 16 мая 2019

guest/guest по умолчанию запрещено удаленно.

См. "Гость" пользователь может подключаться только с localhost .

По умолчанию гостевой пользователь запрещен для подключения с удаленных хостов; он может подключаться только через петлевой интерфейс (т. е. localhost). Это относится к соединениям независимо от протокола. Другие пользователи не будут (по умолчанию) ограничены таким образом.

Далее объясняется, как перенастроить брокера, если вы действительно хотите это разрешить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...