在我的应用程序中,我们使用Solace MQ并使用HermesJMS工具在本地环境中向MQ发送消息。
当我尝试向MQ发送批量消息时,我得到以下提到的异常。我使用Spring Integration代码来使用来自Solace MQ的消息
void Impersonate()
{
DWORD logonType = LOGON32_LOGON_INTERACTIVE;
DWORD logonProvider = LOGON32_PROVIDER_DEFAULT;
HANDLE userToken;
HANDLE hMutex;
DWORD err;
LPSTR user = "zoom"; // the user I created myself on my machine.
// It has Administrator privileges, and my account,
// from which I start the app, is Admin too
LPSTR password = "zoom";
LPSTR domain = ".";
hMutex = NULL;
LogonUserA(user, domain, password, logonType, logonProvider,&userToken);
// just to make sure that mutexes are created fine before impersonation
hMutex = CreateMutexA( NULL, FALSE, "mutex_good" );
ImpersonateLoggedOnUser(userToken);
hMutex = CreateMutexA( NULL, FALSE, "mutex_797" ); // I can set any
// random name, no difference
if( hMutex == NULL )
{
err = GetLastError();
// here err is ERROR_ACCESS_DENIED
}
CloseHandle(userToken);
}
此异常与int-jms中的某些属性有关:使用Spring集成或Solace MQ属性的消息驱动通道适配器。请建议。
答案 0 :(得分:2)
该异常意味着您在单个事务中发送过多消息。
截至目前,Solace在单个交易中最多支持256条消息。增加最大值是Solace的特征候选列表,但尚未提交给特定版本。
目前,唯一的解决方法是减少事务中的消息数量。