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, < [email protected]> 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 <[email protected]>: > >> 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 <[email protected]> wrote: >> >>> Ok I will try it... >>> >>> On Tue, 14 Jul 2020 at 22:34, Evgenii Zhuravlev < >>> [email protected]> 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 <[email protected]>: >>>> >>>>> 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, < >>>>> [email protected]> 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 <[email protected]>: >>>>>> >>>>>>> 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? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>
