Something like this:

void HandleMessage(m)
{
  session = open_session();
  try
  {
    ... do stuff with message and database ...
  }
  finally
  {
    if (session != null)
      session.Close();
  }
}


On Tue, Jan 5, 2021 at 11:21 PM Hakan karaoğlu <[email protected]>
wrote:

> Where should I do this?
>
> can you give me a example?
>
> 5 Oca 2021 Sal, saat 23:11 tarihinde Jørn Wildt <[email protected]> şunu yazdı:
>
>> It seems like you are missing a session.Close() ... and perhaps also some
>> transaction handling with a commit() or rollback() (but that is not a cause
>> for your problem).
>>
>> If you don’t close sessions and thus database connections, the database
>> layer will close them for you - but first after some idle timeout. If you
>> open more than you close, you eventually run out of connections.
>>
>> /Jørn
>>
>> tir. 5. jan. 2021 kl. 21.11 skrev Hakan karaoğlu <[email protected]
>> >:
>>
>>> Greetings,
>>> I have a question, I would be glad if you can help.
>>>
>>> Consider an application that heavily handles messages coming from
>>> Rabbitmq queue. Meanwhile, it queries the database and the data is saved
>>> and updated.
>>>
>>> My question is, it processes 500 of the 1000 incoming data, but the rest
>>> mostly gives the error I mentioned on the subject. "Pooled connection
>>> request timed out" I think the problem is from nhsession and somehow it
>>> fills the pool.
>>>
>>> What should I do, what would you recommend?
>>>
>>> Example configuration is below.
>>>
>>> *private static object lockObject = new object();*
>>> *        private static ISessionFactory sessionFactory;*
>>> *        private static FluentConfiguration configuration;*
>>> *        private static ISessionFactory SessionFactory*
>>> *        {*
>>> *            get  **{** lock (lockObject)**  {*
>>> *              if (sessionFactory == null)*
>>> *                    {*
>>> *                        sessionFactory =
>>> configuration.BuildSessionFactory();*
>>> *                    }*
>>> *                    return sessionFactory;*
>>> *                }*
>>> *            }*
>>> *        }*
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *public static IServiceCollection AddSniffactorNhibernate(this
>>> IServiceCollection services, string connectionString)        {
>>> Check.NotNull(connectionString);            configuration =
>>> Fluently.Configure()
>>> .Database(OracleManagedDataClientConfiguration.Oracle10
>>> .ConnectionString(connectionString)               Mappings(m =>
>>> m.FluentMappings.AddFromAssemblyOf<ISniffactorMapping>());
>>> services.AddSingleton(SessionFactory);
>>> services.AddScoped(factory =>
>>> configuration.BuildSessionFactory().OpenSession());
>>> services.AddScoped(typeof(IRepository<>), typeof(NhRepositoryBase<>));
>>>       services.AddScoped(typeof(IUnitOfWork), typeof(NhUnitOfWork));
>>>     services;        }And example a repopublic class
>>> KeywordDetectionViewRepository : NhRepositoryBase<KeywordDetectionView>,
>>> IKeywordDetectionViewRepository    {        private readonly ISession
>>> _session;        public KeywordDetectionViewRepository(ISession session) :
>>> base(session)        {            _session = session;        }
>>> public async Task<List<KeywordDetectionView>> GetKeywordsAsync(string
>>> source, string tag, LanguageTypes languageTypes)        {            var
>>> query = _session.CreateCriteria<KeywordDetectionView>();            int
>>> keywordId = int.Parse(tag.Substring(2));            if
>>> (tag.StartsWith("k_"))            {
>>> query.Add(Restrictions.Eq("KeywordId", keywordId));            }
>>> else if (tag.StartsWith("v_"))            {
>>> query.Add(Restrictions.Eq("VariationId", keywordId));            }
>>>   query.Add(Restrictions.Eq("SourceCode", source));
>>> query.Add(Restrictions.Or(Restrictions.Eq("LanguageCode",
>>> languageTypes.ToString().ToLowerInvariant()),
>>> Restrictions.IsNull("LanguageCode")));            var result = await
>>> query.SetCacheable(false).ListAsync<KeywordDetectionView>();
>>> return (List<KeywordDetectionView>)result;        }    }*
>>>
>>>
>>>
>>> --
>>> 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/ff0cbb51-f210-412e-9058-4db704eea99fn%40googlegroups.com
>>> <https://groups.google.com/d/msgid/nhusers/ff0cbb51-f210-412e-9058-4db704eea99fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>> /Jørn
>>
>> --
>> 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/CALh-yk%2BPGmAjz8AFWi%2B6jGhPbOZiBHv4Jy_UZ2gAXVUcn0dS%2Bg%40mail.gmail.com
>> <https://groups.google.com/d/msgid/nhusers/CALh-yk%2BPGmAjz8AFWi%2B6jGhPbOZiBHv4Jy_UZ2gAXVUcn0dS%2Bg%40mail.gmail.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/CAAhRLA1p8pe2z0HkVY9jhq-nzT8ptGSBWRBgFddpKpYsmu4zmQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/nhusers/CAAhRLA1p8pe2z0HkVY9jhq-nzT8ptGSBWRBgFddpKpYsmu4zmQ%40mail.gmail.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/CALh-yk%2B02rUCNZOvWMTCGPWC%2BB7%2BiJv6nvnvSiUWS7cgK6Pv_w%40mail.gmail.com.

Reply via email to