我们使用下面的AMQP JAR将消息从java发送到windows server(1.1)上service bus中的队列设置。发送小消息时没有问题,但无法发送pre-prod中大小超过45kb、prod中大小超过160kb的消息。消息根本没有进入队列,java端也没有异常。
geronimo-jms\u 1.1\u spec-1.0.1。jar qpid-amqp-1-0-client-0.22。jar qpid-amqp-1-0-client-jms-0.22。jar qpid-amqp-1-0-common-0.22。罐子
接收到的消息在网关配置中正确配置。
我只是想知道是什么导致了邮件大小的限制?任何帮助都将不胜感激。
谢谢你,斯里。
我有同样的问题。无法发送大于256kb的消息。出错链接已分离。
问题在于服务总线的配置。默认情况下,SB不允许大于256kb的消息。我们不得不更改配置以允许更大的消息。
这是我编写的发送一条消息(109 kb)的小测试程序。我在java端没有收到任何异常,而且消息也没有出现在服务总线队列中。
import org.apache.qpid.amqp_1_0.jms.impl.*;
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.net.URLEncoder;
import java.util.Hashtable;
import java.io.*;
public class ServiceBusPublisher {
public static void main(String[] args) throws Exception {
String userName = "test";
String password = "test";
String fqdn = "test@test.com";
String connectionString = "amqps://" + encode(userName) + ":" + encode(password) + "@" + fqdn;
File file = new File("D:\\temp\\test.xml");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
bufferedReader.close();
fileReader.close();
String messageText = stringBuffer.toString();
System.out.print("Initial setup\n");
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory");
env.put(Context.PROVIDER_URL, "blah.txt");
env.put("connectionfactory.ServiceBusConnectionFactory", connectionString);
Context context = null;
ConnectionFactory connectionFactory = null;
Connection connection = null;
try
{
System.out.print("Creating context\n");
context = new InitialContext(env);
System.out.print("Creating connection factory\n");
connectionFactory = (ConnectionFactory)context.lookup("ServiceBusConnectionFactory");
System.out.print("Creating connection\n");
connection = connectionFactory.createConnection();
}
catch (Exception e)
{
System.out.print("Exception creating context/connection factory/connection\n");
System.out.print(e.toString());
return;
}
Session session = null;
MessageProducer producer = null;
try
{
System.out.print("Creating session\n");
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
System.out.print("Creating producer\n");
producer = session.createProducer(QueueImpl.createQueue("MessageProcessingService-PRE/testqueue"));
}
catch (Exception e)
{
System.out.print("Exception creating session/producer\n");
System.out.print(e.toString());
return;
}
try
{
System.out.print("Creating message\n");
BytesMessage message = session.createBytesMessage();
message.writeBytes(messageText.getBytes("UTF-8"));
message.setStringProperty("JMSXGroupID", "MessageProcessingService-PRE/testqueue");
System.out.print("Sending\n");
producer.send(message);
}
catch (Exception e)
{
System.out.print("Exception creating message and sending\n");
System.out.print(e.toString());
return;
}
try
{
System.out.print("Cleaning up\n");
producer.close();
session.close();
connection.stop();
connection.close();
}
catch (Exception e)
{
System.out.print("Exception closing producer and session\n");
System.out.print(e.toString());
}
}
public static String encode(String encodee)
{
String retval = "";
try { retval = URLEncoder.encode(encodee, "UTF-8"); } catch (Exception e) { System.out.print("Encoding failed\n"); }
return retval;
}
}
我要问的问题以前在这里被问过。David Ingham在背诵此Microsoft文档时给出了答案。Sentinel已确认该解决方案有效。 然而,我也有同样的问题。我严格遵守Microsoft文档,但仍然存在相同的问题。 冒着冗余的风险,问题是当使用Qpid-JMS客户端库(版本0.22或0.26)连接到Windows Server(非Azure)上的服务总线(1.1)并遵循Microsoft的所有
我在Azure中托管了两个云服务辅助角色,一个使用NServiceBus(Azure服务总线传输)消耗消息,另一个生成消息。 昨天,我部署了一个新版本的生产者工作者角色,而队列中仍然有大量消息,因为我们正在处理早上遗留下来的大量消息。当生产者启动时,它似乎已经清空(或者可能重新创建)队列,许多重要的生产消息丢失。这似乎很奇怪,但日志显示,大约在生产者角色启动时,消费者没有处理进一步的消息,我们知道
我已经创建了一个简单的窗口服务来使用来自Azure服务总线队列的消息。我使用TopShelch创建windows服务。下面的代码从这里剪切如下示例:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues 高频。Run(); ServiceBusHe
我正在尝试在Azure中构建一个简单的WebAPI REST服务,后端有一个服务总线队列工作器。我可以从Web API向工作人员发送一条消息。然而,我试图发送更多的信息,只是为了看看一切是如何运作的。因此,我创建了一个简单的控制器,如下所示: 当我呼叫控制器时,我只收到工作人员接收到的大约1/2的消息。其余的似乎都被放弃了。
我已经查看了有关Azure Service Bus调度的文档,但我不清楚如何确切地从“断开连接的”总线发送消息。 以下是我如何配置在服务器上处理消息的服务: 我明确调用了。 在创建消息并将消息发送到队列的项目中(在不同的上下文中运行,因此执行“仅发送”),我们有以下内容: 现在,要发送预定消息,我们这样做: 我不确定需要向目标地址传递什么。 我尝试过:-<代码>服务URI-`{serviceUri
按照这里的说明https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues测试一个java应用程序来连接,发送和接收消息 使用azure messaging servicebus的7.0.2版本,一切正常。 然而,当我更新版本时,在构建时或运行时都会出现错误。 我知道它