AmazonMQ 큐에 자바와 BLOB 파일을 업로드 (ActiveMQ를)

벤 :

나는 아마존 MQ와 함께 작동하도록해야합니다. 아마존 MQ는 ActiveMQ를 기반으로합니다. 나는 몇 가지 코드를 발견하고는 큐에 BLOB 메시지 (PDF 크기 230 KB)을 넣어해야합니다. 하지만 아래의 오류 스택에 오류가 프로그램을 실행합니다.

이건 내 코드입니다 :

private final static String WIRE_LEVEL_ENDPOINT = "ssl://<examplednsname>-1.amazonaws.com:61617";
private final static String ACTIVE_MQ_USERNAME = "test123";
private final static String ACTIVE_MQ_PASSWORD = "test123";

public static void sendFileViaQueue(String uri, String queueName) throws JMSException {
    File file = new File("test.pdf");
    ConnectionFactory connectionFactory = null;
    Connection connection = null;
    Session session = null;
    BlobMessage blobMsg = null;
    MessageProducer producer = null;
    try {
        connectionFactory = new ActiveMQConnectionFactory(ACTIVE_MQ_USERNAME, ACTIVE_MQ_PASSWORD, WIRE_LEVEL_ENDPOINT);
        connection = connectionFactory.createConnection();
        connection.start();
        session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        producer = session.createProducer(session.createQueue(queueName));
        blobMsg = ((ActiveMQSession) session).createBlobMessage(file);
        blobMsg.setStringProperty("FILE.NAME", file.getName());
        blobMsg.setLongProperty("FILE.SIZE", file.length());
        producer.send(blobMsg);
        session.commit();
    } finally {
        closeQuietly(producer);
        closeQuietly(session);
        closeQuietly(connection);
    }
}

그것은 8080에 업로드 뭔가를 원하지만 내가 로컬 구성 아무것도하지 않았다 것 같다. 그것은 만 그게 전부 큐에 PDF를 업로드해야합니다.

누구에게이 문제를 해결하는 아이디어가있다? 그것은 복잡 단지 큐에 방울을 업로드하는 것이 안된다.

이것은 내가 무엇입니까 스택 추적입니다 :

javax.jms.JMSException: PUT failed to: http://localhost:8080/uploads/ID:bpSligro-PC-50920-1584558692848-1:1:1:1:1
    at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72)
    at org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:177)
    at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1952)
    at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:288)
    at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:223)
    at org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241)
    at nl.bpittens.mq.AmazonMQExample.sendFileViaQueue(AmazonMQExample.java:81)
    at nl.bpittens.mq.AmazonMQExample.main(AmazonMQExample.java:52)
Caused by: java.io.IOException: PUT failed to: http://localhost:8080/uploads/ID:bpSligro-PC-50920-1584558692848-1:1:1:1:1
    at org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadStream(DefaultBlobUploadStrategy.java:67)
    at org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadFile(DefaultBlobUploadStrategy.java:44)
    at org.apache.activemq.blob.BlobUploader.upload(BlobUploader.java:53)
    at org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:174)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
    at sun.net.www.http.HttpClient.New(HttpClient.java:339)
    at sun.net.www.http.HttpClient.New(HttpClient.java:357)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1334)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1309)
    at org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadStream(DefaultBlobUploadStrategy.java:60)
    ... 9 more

일반 JMS 보내기 TextMessage문제없이 작동합니다.

저스틴 버트 :

에서 언급 한 바와 같이 문서 ,에 "BLOB"메시지 :

있게 다량으로 BLOB (진 대형 오브젝트) 일부 대역 반송기구 주위에 전송한다. 가능한 대역 메커니즘은 HTTP 나 FTP 또는 SCP 또는 다른 포인트 - 투 - 포인트 프로토콜을 수 있습니다.

실제 바이너리 데이터를 전송해야 함을주의 "일부 대역 전송 메커니즘 ." 즉, BLOB 실제로 대기열로 이동하지 않습니다. 블롭은 업로드 다른 곳 큐에가는 메시지는 단순히 위치를 가리 킵니다.

당신은 사용하여 전송 정책을 구성해야 jms.blobTransferPolicy.uploadUrl클라이언트 URL에 매개 변수를. 기본 전송 정책의 기본 업로드 URL은 http://localhost:8080/uploads/클라이언트가 바이너리 데이터를 업로드 사용하려고하는 무엇이다.

오히려 밴드 메커니즘의 일부 아웃을 사용하는 것보다 큐에 직접 임의의 큰 메시지를 보내려면 이동을 고려 ActiveMQ를 아르테미스 지원 하는 기능을 .

만약 당신이있는 거 붙어 아마존 MQ를 사용하여 그때 당신은 당신이 나중에 그 덩어리를 조립 다시 다음 개별 메시지에 투입 할 수있는 작은 조각으로 파일을 깰 수동 솔루션의 일종 이외의 다른 어떤 해결책을 가지고 생각하지 않는다 소비 응용 프로그램입니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=321017&siteId=1