The parallel loop is just one example. I am using the methods called here 
within a rabbitmq consumer.

For Example:

public async Task Consume(ConsumeContext<WorkspaceDispatcherMessage> 
context)
        {
            var wsMessage = context.Message;
            try
            {
                var feedDispatcher = 
FeedDispatcherFactory.CreateDispatcher(wsMessage.FeedProxy, 
wsMessage.Keywords);               
                var workspaceAsync = await 
feedDispatcher.GetWorkspaceAsync(wsMessage.FeedProxy, wsMessage.Keywords);  
              

                foreach (var workspaceId in workspaceAsync.Keys)
                {
                    var sentimentDetectionMessage = new 
SentimentDetectionMessage
                    {
                        ConversationId = wsMessage.ConversationId,
                        FeedProxy = wsMessage.FeedProxy,
                        FeederProxy = wsMessage.FeederProxy,
                        Keywords = workspaceAsync[workspaceId],
                        WorkspaceId = workspaceId
                    };
                    await _bus.Publish(sentimentDetectionMessage);
                }
            }
            catch (Exception exp)
            {                
                throw exp;
            }
        }

30 Ekim 2020 Cuma tarihinde saat 23:04:11 UTC+3 itibarıyla Gunnar Liljas 
şunları yazdı:

> You really shouldn't combine Parallel.For and async. Ever. And 
> NHibernate's session isn't thread safe, so it shouldn't be used from 
> multiple threads.
>
> /G
>
> On Fri, Oct 30, 2020 at 6:46 PM Hakan karaoğlu <[email protected]> 
> wrote:
>
>> Hi,
>>
>> I'm using rabbitmq and nhibernate in a .net core project. I run 
>> asynchronous queries for database operations on some consumers. For 
>> example, I am sending a single message to the queue, the message is 
>> processed successfully, but when I send 100 messages, database operations 
>> start getting errors after a while.
>>
>> I tested the similar structure as follows. I did database transactions 
>> 100 times in a loop and it didn't give an error. But when I tried it in 
>> parallel loop, it gave an error like in rabbitmq.
>>
>> Is this from Nhibernate or is there a different logic? Nhibernate not 
>> thread-safe?
>>
>> Sample Code with Error :
>>
>> Parallel.For(0, 100, async act =>
>>             {
>>                 var ws = await 
>> _workspaceRepository.GetWorkspaceByIdAsync(66);
>>                 System.Console.WriteLine($"GetWorkspaceByIdAsync : 
>> {ws.Name}");
>>                 var keywords = await 
>> _workspaceKeywordRepository.GetForbiddenKeywordsByWorkspaceAsync(66);
>>                 
>> System.Console.WriteLine($"GetForbiddenKeywordsByWorkspaceAsync : 
>> {keywords.Count}");
>>                 var IsforbiddenKeyword = await 
>> HasForbiddenKeywordAsync(66, "facebook", "instagram");
>>                 System.Console.WriteLine($"HasForbiddenKeywordAsync : 
>> {IsforbiddenKeyword}");
>>             });
>>
>> -- 
>>
> You received this message because you are subscribed to the Google Groups 
>> "nhusers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/nhusers/15a15084-855f-4d1c-9ebd-ea1b62cf9a0cn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/nhusers/15a15084-855f-4d1c-9ebd-ea1b62cf9a0cn%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nhusers/4d245421-bf91-474d-97eb-f730e083028fn%40googlegroups.com.

Reply via email to