-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Using Mysql 5.5.44-0ubuntu0.12.04.1 get error #66
Comments
把你项目上传到github我看一下配置和结构 |
PS: 同时启动了这两个项目
|
好的,我删除了一些没用的代码,去掉了数据库,除了两个cap1 cap2的库, 您截图的地方,是长的调用链来的,一批MQ消息消费完后,跟着一个eof结束的标识消息,然后触发下一步汇总的处理,我eof的publish没有包在事务里,因为它是消费结束的标识,没有其它数据库操作事务。 我调整完这些代码后,还使用了Mysql 5.5.44-0ubuntu0.12.04.1测试了一下,问题仍旧,希望能够找到原因,使CAP能更完善,非常感谢 |
Hi @ajdwfnhaps ~ 如果还有其他问题,可以 reopen 此 issue。 |
太好了,非常感谢,我这边已更新测试过了,现在没问题了 |
BTW,能否用我这个示例项目修改为异步发送MQ消息测试一下(PublishAsync),我这边测试异步发送就有可能报以下这个错误:
|
你的项目我已经运行起来了,怎么样发消息呢? @ajdwfnhaps 我需要运行 tables_mysql_innodb.sql 生成表吗? 你还需要补充说明一下你这个项目的运行原理 |
@yuleyule66 不需要运行sql的,您跑起来后有这个Job吗,有就手动执行一下就可以发消息的了 如果没有这个Job,需要替换一下quartz.db这个Sqlite数据库,位置在项目AAM.Quartz.Web\Persistence\SQLite |
启动 AAM.Quartz.Web
|
这个问题是由于并发冲突导致。 因为连接池的问题,不同线程获取到了相同的连接,mysql不支持同一个连接一边DataReader读,一边进行Execute。 默认情况下,在PublishAsync内部会开启事务,当CAP检测的外围事务时,会使用外围事务。 手动开启事务,会大大降低这种概率发生的可能性。 using (var trans = await _dbContext.Database.BeginTransactionAsync())
{
for (int i = 0; i < 1000; i++)
{
await _capBus.PublishAsync("sample.test.testsend", DateTime.Now);
}
trans.Commit();
} |
好的,谢谢,我稍后就试吓 |
CAP数据使用Mysql版本为5.5.44-0ubuntu0.12.04.1 时,我测试只发送1条MQ消息,但接收到33条一模一样的消息,详情请看以下载图:
1.发出的:
![image](https://user-images.githubusercontent.com/11205717/33421625-ab5373cc-d5ed-11e7-8f6f-c1a32ac28a02.png)
2.接收的:
![image](https://user-images.githubusercontent.com/11205717/33421839-606b5ee6-d5ee-11e7-878b-925cd8655766.png)
Id都一样,内容也一样,接收到了33条消息,订阅方法触发了33次,好奇怪的现象,想请教一下大概是什么问题呢?
PS:当我数据库切换成Mysql 5.7后就没有这种问题了,是否也是mysql语法的问题导致?貌似是不断的重试机制造成的,cap.queue表里会出现重复的MessageId一样的记录在运行……
The text was updated successfully, but these errors were encountered: