Well it's more because I have to inject the ignite instance into my cache "repository" which abstracts away the IgniteCache only.
And if the builder is not an expensive operation I guess I can find a way to pass the ignite instance down into the cache repo implementation. On Wed, 15 Jul 2020 at 17:45, Evgenii Zhuravlev <e.zhuravlev...@gmail.com> wrote: > John, > > Then you should just get a new builder every time when you need it: > myIgniteInstance.binary().builder("MyKey"). I don't see why you need to > reuse builder from multiple threads here. > > Evgenii > > ср, 15 июл. 2020 г. в 14:34, John Smith <java.dev....@gmail.com>: > >> I'm using it in Vertx.io. if you understand the concept a bit. I have 2 >> vertices. >> >> I create 2 instances of BinaryObjectBuilder >> >> Each builder creates a new object (binary key) per "event" that comes in. >> >> So if I get 2 events then each builder will build one... >> >> If I get 3 events, the 3rd event will wait until one of the event loops >> can process the next event... >> >> >> >> On Wed., Jul. 15, 2020, 3:43 p.m. Evgenii Zhuravlev, < >> e.zhuravlev...@gmail.com> wrote: >> >>> 1. This builder can be used for making one object, do you want to >>> construct one object from multiple threads? >>> 2. No, you still can work with BinaryObjects instead of actual classes. >>> >>> Evgenii >>> >>> ср, 15 июл. 2020 г. в 08:50, John Smith <java.dev....@gmail.com>: >>> >>>> Hi Evgenii, it works good. I have two questions... >>>> >>>> 1- Is the BinaryObjectBuilder obtained from >>>> myIgniteInstance.binary().builder("MyKey"); thread safe? Can I pass the >>>> same builder to multiple instances of my cache "repository" wrapper I >>>> wrote? >>>> 2- If we want to use the actual MyKey class then I suppose that needs >>>> to be in the classpath on all nodes? >>>> >>>> On Wed, 15 Jul 2020 at 10:43, John Smith <java.dev....@gmail.com> >>>> wrote: >>>> >>>>> Ok I will try it... >>>>> >>>>> On Tue, 14 Jul 2020 at 22:34, Evgenii Zhuravlev < >>>>> e.zhuravlev...@gmail.com> wrote: >>>>> >>>>>> John, >>>>>> >>>>>> It's not necessary to have class at all, you can specify any type, >>>>>> you just need to use this type when creating binary object for this key. >>>>>> >>>>>> вт, 14 июл. 2020 г. в 17:50, John Smith <java.dev....@gmail.com>: >>>>>> >>>>>>> I just used two columns as primary key... >>>>>>> >>>>>>> Of I use key_type and specify a type does that class need to exist >>>>>>> in the class path of the server nodes? >>>>>>> >>>>>>> Like if I have >>>>>>> >>>>>>> class MyKeyClass { >>>>>>> Integer col1; >>>>>>> Integer col2; >>>>>>> } >>>>>>> >>>>>>> Does this class need to be loaded in all nodes or ignite can figure >>>>>>> it out and marshal it? >>>>>>> >>>>>>> On Tue., Jul. 14, 2020, 6:50 p.m. Evgenii Zhuravlev, < >>>>>>> e.zhuravlev...@gmail.com> wrote: >>>>>>> >>>>>>>> Hi John, >>>>>>>> >>>>>>>> To do this, you need to create a key object with the same type as >>>>>>>> you have for the table. If you don't specify KEY_TYPE in the create >>>>>>>> table >>>>>>>> script, it will be generated automatically. I would recommend to >>>>>>>> specify it >>>>>>>> for the command(just type name, if you don't have a class) and, when >>>>>>>> you >>>>>>>> need to get data using key-value API, just create a binary object of >>>>>>>> this >>>>>>>> type with these fields: >>>>>>>> https://www.gridgain.com/docs/latest/developers-guide/key-value-api/binary-objects#creating-and-modifying-binary-objects >>>>>>>> >>>>>>>> Evgenii >>>>>>>> >>>>>>>> вт, 14 июл. 2020 г. в 07:18, John Smith <java.dev....@gmail.com>: >>>>>>>> >>>>>>>>> Hi, I have an SQL table >>>>>>>>> >>>>>>>>> create table if not exists my_table ( >>>>>>>>> column1 int, >>>>>>>>> column2 int, >>>>>>>>> column3 varchar(16), >>>>>>>>> PRIMARY KEY (column1, column2) >>>>>>>>> ) with "template=replicatedTpl"; >>>>>>>>> >>>>>>>>> and I'm creating my near cache as follows... >>>>>>>>> >>>>>>>>> IgniteCache<Integer, String> myCache; >>>>>>>>> >>>>>>>>> NearCacheConfiguration<Integer, String> nearConfig = new >>>>>>>>> NearCacheConfiguration<>(); >>>>>>>>> nearConfig.setNearEvictionPolicyFactory(new >>>>>>>>> LruEvictionPolicyFactory<>(1024)); >>>>>>>>> >>>>>>>>> myCache = >>>>>>>>> this.ignite.getOrCreateNearCache(SQL_PUBLIC_MY_TABLE, nearConfig) >>>>>>>>> .withExpiryPolicy(new AccessedExpiryPolicy(new >>>>>>>>> Duration(TimeUnit.HOURS, 1))); >>>>>>>>> >>>>>>>>> So if I use myCache.get()... >>>>>>>>> >>>>>>>>> 1- How do I specify the primary key if it's 2 columns? >>>>>>>>> 2- I assume the data will be put in near cache? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>