小编May*_*res的帖子

在单元测试中重新启动嵌入式代理:VMTransportServer已绑定

我正在尝试编写一个模拟"经纪人下行"阶段的测试.所以我想

  1. 开始当地经纪人
  2. 发送消息1
  3. 停止经纪人
  4. 发送消息2(当然不会到达)
  5. 再次启动经纪人
  6. 发送消息3

根据http://activemq.apache.org/how-do-i-restart-embedded-broker.html,建议初始化一个新的BrokerService以再次启动代理.所以代码看起来(几乎)像这样:

private BrokerService _broker;

private void startBroker() throws Exception {
    _broker = new BrokerService(); 
    _broker.addConnector("vm://localhost?broker.persistent=false");
    _broker.start();
    _broker.waitUntilStarted();
}

private void stopBroker() throws Exception {
    _broker.stop();
    _broker.waitUntilStopped();
}

@Test
public void publishMessagesWithServerBreakdownInBetween()
    throws Exception
{
    startBroker();
    ... send and receive message (works fine)
    stopBroker();
    ... send message (fails of course)  
    startBroker(); // this fails with java.io.IOException: VMTransportServer already bound at: vm://localhost?broker.persistent=false
    ... send and receive message
}
Run Code Online (Sandbox Code Playgroud)

代码中的注释已经提到了这个问题:由于错误导致代理重启失败:java.io.IOException:VMTransportServer已经绑定在:vm:// localhost?broker.persistent = …

java unit-testing activemq-classic

7
推荐指数
1
解决办法
1007
查看次数

ODBC 驱动程序 SQLSRV32.dll 与 SQL Server 版本的兼容性

在哪里可以找到名为“SQL Server”的标准 ODBC 驱动程序 (SQLSRV32.dll) 与哪些 SQL Server 版本兼容的信息?

当然它可以与 Microsoft SQL Server 2008 R2 一起使用,因为我们正在成功使用它们。

但下面的情况又如何呢?

  • 微软 SQL Server 2012
  • 微软 SQL Server 2014
  • 微软 SQL Server 2016
  • 微软 SQL Server 2017

不幸的是,我在几个小时后无法使用我最喜欢的网络搜索引擎找到该信息。https://learn.microsoft.com/en-us/sql/connect/odbc/windows/microsoft-odbc-driver-for-sql-server-on-windows上 有可以下载的较新驱动程序的说明,但我们没有管理员权限来安装其中之一。我们必须使用 Windows 上开箱即用安装的标准 ODBC 驱动程序,因为该应用程序应该在客户的台式 PC 上运行。

可能此信息还取决于 DLL 的版本。我们以版本 10.00.15063.00 为例,但由于上述原因,它可能会有所不同。我们并不确切知道客户使用哪个 Windows 版本。可以是[Win7、Win8、Win10]/[家庭/专业/企业]。

sql-server odbc driver

5
推荐指数
1
解决办法
2万
查看次数

网络故障后重新连接到ActiveMQ服务器

我们使用ActiveMQ 5.8.0通过TCP将我们的Java应用程序连接到另一个系统.请求/回复(与回复临时队列同步)与我们的客户及其相应部分一起正常工作.

但我们不确定如何处理"异常"情况,例如短暂的网络故障.我们正在测试应用程序是否可以在套接字重新连接后继续正常工作.

但直到现在我们无法管理,因为客户端似乎没有按预期自动重新连接到代理.我们考虑过在自己的TransportListener中自己实现它,但不建议这样做(请参阅传输侦听器和ActiveMq重启,其中ActiveMQ成员Tim Bish提示使用故障转移协议).但故障转移只是设法切换到另一个经纪人,如果一个人失败,对吧?

目前,我们仅使用TransportListener来监视日志文件中的连接状态,这会导致一些日志条目如下面或类似(在下面的长日志中发布).

ActiveMQ连接执行程序:...生产者收到:java.net.SocketException:...

class ConnectionStateMonitor
    implements TransportListener
{
    @Override
    public void onCommand(Object command)
    {
        logInfo("Producer received: " + command);
    }

    @Override
    public void onException(IOException exception)
    {
        logError("Producer received: " + exception);
    }

    @Override
    public void transportInterupted()
    {
        logError("Producer received transport interuption.");
    }

    @Override
    public void transportResumed()
    {
        logInfo("Producer received transport resumption.");
    }
}
Run Code Online (Sandbox Code Playgroud)

对不起,发布下面有堆栈跟踪的长日志摘录,但也许有人会立即看到丢失的内容.

我们目前正在使用以下设置:

  • wireFormat.maxInactivityDuration = 20000
  • 回复的最长等待时间:10000毫秒

任何想法如何解决这个问题(以及如何格式化下面的日志)?

提前致谢!

2013-06-05 14:09:21,676 | main | Signal | DEBUG |等待60000 2013-06-05 14:09:30,279 | ActiveMQ …

activemq-classic jms

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

activemq-classic ×2

driver ×1

java ×1

jms ×1

odbc ×1

sql-server ×1

unit-testing ×1